uipath-langchain 0.0.125__tar.gz → 0.0.126__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 (265) hide show
  1. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/PKG-INFO +2 -2
  2. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/pyproject.toml +2 -2
  3. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/company-research-agent/graph.py +16 -2
  4. uipath_langchain-0.0.126/src/uipath_langchain/_cli/_runtime/_conversation.py +256 -0
  5. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/_cli/_runtime/_runtime.py +21 -1
  6. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/uv.lock +12 -5
  7. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/.cursorrules +0 -0
  8. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/.editorconfig +0 -0
  9. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/.gitattributes +0 -0
  10. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/.github/workflows/cd.yml +0 -0
  11. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/.github/workflows/ci.yml +0 -0
  12. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/.github/workflows/commitlint.yml +0 -0
  13. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/.github/workflows/integration_tests.yml +0 -0
  14. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/.github/workflows/lint-custom-version.yml +0 -0
  15. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/.github/workflows/lint.yml +0 -0
  16. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/.github/workflows/publish-dev.yml +0 -0
  17. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/.github/workflows/publish-docs.yml +0 -0
  18. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/.github/workflows/publish-prior-stable-version.yml +0 -0
  19. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/.github/workflows/slack.yml +0 -0
  20. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/.github/workflows/test-custom-version.yml +0 -0
  21. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/.github/workflows/test.yml +0 -0
  22. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/.gitignore +0 -0
  23. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/.pre-commit-config.yaml +0 -0
  24. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/.python-version +0 -0
  25. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/.vscode/extensions.json +0 -0
  26. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/.vscode/settings.json +0 -0
  27. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/CONTRIBUTING.md +0 -0
  28. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/LICENSE +0 -0
  29. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/README.md +0 -0
  30. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/chat_models.md +0 -0
  31. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/context_grounding.md +0 -0
  32. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/human_in_the_loop.md +0 -0
  33. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/quick_start.md +0 -0
  34. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/quick_start_images/cloud_env_var_dark.png +0 -0
  35. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/quick_start_images/cloud_env_var_light.png +0 -0
  36. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/quick_start_images/invoke_output_dark.png +0 -0
  37. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/quick_start_images/invoke_output_light.png +0 -0
  38. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/RAG/click-storage-bucket.png +0 -0
  39. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/RAG/create-index-1.png +0 -0
  40. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/RAG/create-index-2.png +0 -0
  41. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/RAG/create-process.png +0 -0
  42. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/RAG/create-quiz-generator.png +0 -0
  43. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/RAG/create-storage-bucket-1.png +0 -0
  44. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/RAG/create-storage-bucket-2.png +0 -0
  45. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/RAG/folder-path.png +0 -0
  46. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/RAG/job-info.png +0 -0
  47. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/RAG/output.png +0 -0
  48. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/RAG/process-page.png +0 -0
  49. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/RAG/researcher-1.png +0 -0
  50. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/RAG/researcher-2.png +0 -0
  51. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/RAG/run-process-1.png +0 -0
  52. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/RAG/run-process-2.png +0 -0
  53. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/RAG/storage-bucket-content.png +0 -0
  54. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/multi-agent-distributed/coder-agent-package-overview.png +0 -0
  55. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/multi-agent-distributed/coder-agent-process-configuration.png +0 -0
  56. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/multi-agent-distributed/planner-agent-package-overview.png +0 -0
  57. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/multi-agent-distributed/planner-agent-process-configuration.png +0 -0
  58. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/multi-agent-distributed/researcher-agent-package-overview.png +0 -0
  59. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/multi-agent-distributed/researcher-agent-process-configuration.png +0 -0
  60. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/ticket-classification/activate-apps.png +0 -0
  61. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/ticket-classification/activate-deployment.png +0 -0
  62. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/ticket-classification/copy-folder-path.png +0 -0
  63. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/ticket-classification/deploy-solution-package-wizard.png +0 -0
  64. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/ticket-classification/deploy-solution-package.png +0 -0
  65. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/ticket-classification/monitor-agent.png +0 -0
  66. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/ticket-classification/navigate-to-solution-folder.png +0 -0
  67. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/ticket-classification/resume-condition.png +0 -0
  68. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/ticket-classification/run-agent.png +0 -0
  69. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/ticket-classification/solution-destination-folder.png +0 -0
  70. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/ticket-classification/start-job.png +0 -0
  71. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/docs/sample_images/ticket-classification/upload-solution-package.png +0 -0
  72. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/RAG-quiz-generator/README.md +0 -0
  73. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/RAG-quiz-generator/env.example +0 -0
  74. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/RAG-quiz-generator/input.example/quiz-generator-debug-input.json +0 -0
  75. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/RAG-quiz-generator/input.example/researcher-debug-input.json +0 -0
  76. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/RAG-quiz-generator/langgraph.json +0 -0
  77. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/RAG-quiz-generator/pyproject.toml +0 -0
  78. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/RAG-quiz-generator/quiz-generator-RAG-agent.mermaid +0 -0
  79. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/RAG-quiz-generator/researcher-RAG-agent.mermaid +0 -0
  80. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/RAG-quiz-generator/src/agents/quiz-generator-RAG-agent.py +0 -0
  81. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/RAG-quiz-generator/src/agents/researcher-RAG-agent.py +0 -0
  82. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/RAG-quiz-generator/uipath.json +0 -0
  83. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/RAG-quiz-generator/uv.lock +0 -0
  84. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/README.md +0 -0
  85. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/company-research-agent/.env.example +0 -0
  86. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/company-research-agent/agent.mermaid +0 -0
  87. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/company-research-agent/langgraph.json +0 -0
  88. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/company-research-agent/pyproject.toml +0 -0
  89. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/company-research-agent/uipath.json +0 -0
  90. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/company-research-agent/uv.lock +0 -0
  91. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/email-organizer-agent/.env.template +0 -0
  92. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/email-organizer-agent/.python-version +0 -0
  93. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/email-organizer-agent/.vscode/launch.json +0 -0
  94. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/email-organizer-agent/README.md +0 -0
  95. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/email-organizer-agent/agent.mermaid +0 -0
  96. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/email-organizer-agent/input.json +0 -0
  97. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/email-organizer-agent/langgraph.json +0 -0
  98. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/email-organizer-agent/pyproject.toml +0 -0
  99. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/email-organizer-agent/src/email_organizer/__init__.py +0 -0
  100. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/email-organizer-agent/src/email_organizer/main.py +0 -0
  101. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/email-organizer-agent/src/email_organizer/outlook_client.py +0 -0
  102. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/email-organizer-agent/uipath.json +0 -0
  103. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/email-organizer-agent/uv.lock +0 -0
  104. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/hitl-inbox-server/database.py +0 -0
  105. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/hitl-inbox-server/main.py +0 -0
  106. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/hitl-inbox-server/models.py +0 -0
  107. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/hitl-inbox-server/pyproject.toml +0 -0
  108. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/hitl-inbox-server/schemas.py +0 -0
  109. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/hitl-inbox-server/templates/index.html +0 -0
  110. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/hitl-inbox-server/uv.lock +0 -0
  111. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/multi-agent-planner-researcher-coder-distributed/.env.example +0 -0
  112. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/multi-agent-planner-researcher-coder-distributed/README.md +0 -0
  113. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/multi-agent-planner-researcher-coder-distributed/coder.mermaid +0 -0
  114. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/multi-agent-planner-researcher-coder-distributed/langgraph.json +0 -0
  115. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/multi-agent-planner-researcher-coder-distributed/planner.mermaid +0 -0
  116. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/multi-agent-planner-researcher-coder-distributed/pyproject.toml +0 -0
  117. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/multi-agent-planner-researcher-coder-distributed/researcher.mermaid +0 -0
  118. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/multi-agent-planner-researcher-coder-distributed/src/multi-agent-distributed/coder.py +0 -0
  119. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/multi-agent-planner-researcher-coder-distributed/src/multi-agent-distributed/planner.py +0 -0
  120. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/multi-agent-planner-researcher-coder-distributed/src/multi-agent-distributed/researcher.py +0 -0
  121. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/multi-agent-planner-researcher-coder-distributed/uipath.json +0 -0
  122. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/multi-agent-planner-researcher-coder-distributed/uv.lock +0 -0
  123. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/multi-agent-supervisor-researcher-coder/.env.example +0 -0
  124. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/multi-agent-supervisor-researcher-coder/README.md +0 -0
  125. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/multi-agent-supervisor-researcher-coder/agent.mermaid +0 -0
  126. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/multi-agent-supervisor-researcher-coder/graph.py +0 -0
  127. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/multi-agent-supervisor-researcher-coder/langgraph.json +0 -0
  128. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/multi-agent-supervisor-researcher-coder/pyproject.toml +0 -0
  129. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/multi-agent-supervisor-researcher-coder/uipath.json +0 -0
  130. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/multi-agent-supervisor-researcher-coder/uv.lock +0 -0
  131. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/retrieval-chain/.env.example +0 -0
  132. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/retrieval-chain/README.md +0 -0
  133. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/retrieval-chain/main.py +0 -0
  134. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/retrieval-chain/pyproject.toml +0 -0
  135. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/retrieval-chain/uipath.json +0 -0
  136. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/retrieval-chain/uv.lock +0 -0
  137. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/simple-local-mcp/.env.example +0 -0
  138. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/simple-local-mcp/README.md +0 -0
  139. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/simple-local-mcp/agent.mermaid +0 -0
  140. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/simple-local-mcp/langgraph.json +0 -0
  141. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/simple-local-mcp/pyproject.toml +0 -0
  142. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/simple-local-mcp/src/simple-local-mcp/graph.py +0 -0
  143. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/simple-local-mcp/src/simple-local-mcp/math_server.py +0 -0
  144. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/simple-local-mcp/src/simple-local-mcp/weather_server.py +0 -0
  145. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/simple-local-mcp/uipath.json +0 -0
  146. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/simple-local-mcp/uv.lock +0 -0
  147. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/simple-remote-mcp/.env.example +0 -0
  148. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/simple-remote-mcp/README.md +0 -0
  149. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/simple-remote-mcp/agent.mermaid +0 -0
  150. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/simple-remote-mcp/langgraph.json +0 -0
  151. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/simple-remote-mcp/main.py +0 -0
  152. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/simple-remote-mcp/pyproject.toml +0 -0
  153. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/simple-remote-mcp/uipath.json +0 -0
  154. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/simple-remote-mcp/uv.lock +0 -0
  155. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/ticket-classification/.env.example +0 -0
  156. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/ticket-classification/README.md +0 -0
  157. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/ticket-classification/agent.mermaid +0 -0
  158. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/ticket-classification/escalation_app_solution/generic-escalation-app-solution-1.0.0.zip +0 -0
  159. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/ticket-classification/langgraph.json +0 -0
  160. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/ticket-classification/main.py +0 -0
  161. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/ticket-classification/pyproject.toml +0 -0
  162. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/ticket-classification/uipath.json +0 -0
  163. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/samples/ticket-classification/uv.lock +0 -0
  164. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/__init__.py +0 -0
  165. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/_cli/__init__.py +0 -0
  166. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/_cli/_runtime/_context.py +0 -0
  167. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/_cli/_runtime/_exception.py +0 -0
  168. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/_cli/_runtime/_input.py +0 -0
  169. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/_cli/_runtime/_output.py +0 -0
  170. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/_cli/_templates/langgraph.json.template +0 -0
  171. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/_cli/_templates/main.py.template +0 -0
  172. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/_cli/_utils/_graph.py +0 -0
  173. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/_cli/cli_dev.py +0 -0
  174. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/_cli/cli_init.py +0 -0
  175. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/_cli/cli_new.py +0 -0
  176. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/_cli/cli_run.py +0 -0
  177. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/_utils/__init__.py +0 -0
  178. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/_utils/_request_mixin.py +0 -0
  179. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/_utils/_settings.py +0 -0
  180. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/_utils/_sleep_policy.py +0 -0
  181. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/builder/agent_config.py +0 -0
  182. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/chat/__init__.py +0 -0
  183. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/chat/models.py +0 -0
  184. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/embeddings/__init__.py +0 -0
  185. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/embeddings/embeddings.py +0 -0
  186. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/middlewares.py +0 -0
  187. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/retrievers/__init__.py +0 -0
  188. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/retrievers/context_grounding_retriever.py +0 -0
  189. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/tracers/AsyncUiPathTracer.py +0 -0
  190. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/tracers/__init__.py +0 -0
  191. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/tracers/_events.py +0 -0
  192. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/tracers/_instrument_traceable.py +0 -0
  193. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/tracers/_utils.py +0 -0
  194. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/vectorstores/__init__.py +0 -0
  195. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/src/uipath_langchain/vectorstores/context_grounding_vectorstore.py +0 -0
  196. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/Dockerfile +0 -0
  197. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/README.md +0 -0
  198. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/company-research-agent/.env.example +0 -0
  199. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/company-research-agent/agent.mermaid +0 -0
  200. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/company-research-agent/input.json +0 -0
  201. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/company-research-agent/langgraph.json +0 -0
  202. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/company-research-agent/pyproject.toml +0 -0
  203. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/company-research-agent/run.sh +0 -0
  204. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/company-research-agent/src/assert.py +0 -0
  205. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/company-research-agent/src/graph.py +0 -0
  206. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/company-research-agent/uipath.json +0 -0
  207. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/company-research-agent/uv.lock +0 -0
  208. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/multi-agent-supervisor-researcher-coder/.env.example +0 -0
  209. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/multi-agent-supervisor-researcher-coder/README.md +0 -0
  210. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/multi-agent-supervisor-researcher-coder/agent.mermaid +0 -0
  211. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/multi-agent-supervisor-researcher-coder/input.json +0 -0
  212. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/multi-agent-supervisor-researcher-coder/langgraph.json +0 -0
  213. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/multi-agent-supervisor-researcher-coder/pyproject.toml +0 -0
  214. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/multi-agent-supervisor-researcher-coder/run.sh +0 -0
  215. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/multi-agent-supervisor-researcher-coder/src/assert.py +0 -0
  216. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/multi-agent-supervisor-researcher-coder/src/graph.py +0 -0
  217. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/multi-agent-supervisor-researcher-coder/uipath.json +0 -0
  218. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/multi-agent-supervisor-researcher-coder/uv.lock +0 -0
  219. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/simple-local-mcp/.env.example +0 -0
  220. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/simple-local-mcp/README.md +0 -0
  221. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/simple-local-mcp/agent.mermaid +0 -0
  222. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/simple-local-mcp/input.json +0 -0
  223. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/simple-local-mcp/langgraph.json +0 -0
  224. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/simple-local-mcp/pyproject.toml +0 -0
  225. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/simple-local-mcp/run.sh +0 -0
  226. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/simple-local-mcp/src/assert.py +0 -0
  227. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/simple-local-mcp/src/simple-local-mcp/graph.py +0 -0
  228. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/simple-local-mcp/src/simple-local-mcp/math_server.py +0 -0
  229. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/simple-local-mcp/src/simple-local-mcp/weather_server.py +0 -0
  230. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/simple-local-mcp/uipath.json +0 -0
  231. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/simple-local-mcp/uv.lock +0 -0
  232. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/ticket-classification/.env.example +0 -0
  233. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/ticket-classification/README.md +0 -0
  234. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/ticket-classification/agent.mermaid +0 -0
  235. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/ticket-classification/input.json +0 -0
  236. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/ticket-classification/langgraph.json +0 -0
  237. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/ticket-classification/pyproject.toml +0 -0
  238. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/ticket-classification/run.sh +0 -0
  239. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/ticket-classification/src/assert.py +0 -0
  240. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/ticket-classification/src/main.py +0 -0
  241. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/ticket-classification/uipath.json +0 -0
  242. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/testcases/ticket-classification/uv.lock +0 -0
  243. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/__init__.py +0 -0
  244. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/builder/test_config.py +0 -0
  245. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/cli/conftest.py +0 -0
  246. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/cli/mocks/langgraph.json +0 -0
  247. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/cli/mocks/simple_agent.py +0 -0
  248. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/cli/mocks/uipath.json +0 -0
  249. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/cli/test_run.py +0 -0
  250. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/hitl/__init__.py +0 -0
  251. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/hitl/conftest.py +0 -0
  252. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/hitl/mocks/action_trigger_hitl.py +0 -0
  253. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/hitl/mocks/api_trigger_hitl.py +0 -0
  254. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/hitl/mocks/job_trigger_hitl.py +0 -0
  255. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/hitl/mocks/langgraph.json +0 -0
  256. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/hitl/mocks/uipath-default-escalation.json +0 -0
  257. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/hitl/mocks/uipath.json +0 -0
  258. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/hitl/test_action_trigger.py +0 -0
  259. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/hitl/test_hitl_api_trigger.py +0 -0
  260. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/hitl/test_hitl_default_escalation.py +0 -0
  261. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/hitl/test_hitl_job_trigger.py +0 -0
  262. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/test_dummy.py +0 -0
  263. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/tracers/__init__.py +0 -0
  264. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/tracers/test_async_uipath_tracer.py +0 -0
  265. {uipath_langchain-0.0.125 → uipath_langchain-0.0.126}/tests/tracers/test_instrument_traceable.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: uipath-langchain
3
- Version: 0.0.125
3
+ Version: 0.0.126
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
@@ -25,7 +25,7 @@ Requires-Dist: openai>=1.65.5
25
25
  Requires-Dist: openinference-instrumentation-langchain>=0.1.50
26
26
  Requires-Dist: pydantic-settings>=2.6.0
27
27
  Requires-Dist: python-dotenv>=1.0.1
28
- Requires-Dist: uipath<2.2.0,>=2.1.33
28
+ Requires-Dist: uipath<2.2.0,>=2.1.38
29
29
  Provides-Extra: langchain
30
30
  Description-Content-Type: text/markdown
31
31
 
@@ -1,11 +1,11 @@
1
1
  [project]
2
2
  name = "uipath-langchain"
3
- version = "0.0.125"
3
+ version = "0.0.126"
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.33, <2.2.0",
8
+ "uipath>=2.1.38, <2.2.0",
9
9
  "langgraph>=0.5.0, <0.7.0",
10
10
  "langchain-core>=0.3.34",
11
11
  "langgraph-checkpoint-sqlite>=2.0.3",
@@ -3,7 +3,7 @@ from langchain_tavily import TavilySearch
3
3
  from langgraph.graph import END, START, MessagesState, StateGraph
4
4
  from langgraph.prebuilt import create_react_agent
5
5
  from pydantic import BaseModel
6
- from langchain_core.messages import HumanMessage
6
+ from langchain_core.messages import HumanMessage, BaseMessage
7
7
 
8
8
  # Set up the Tavily search tool
9
9
  tavily_tool = TavilySearch(max_results=5)
@@ -35,6 +35,15 @@ llm = ChatAnthropic(model="claude-3-5-sonnet-latest")
35
35
 
36
36
  research_agent = create_react_agent(llm, tools=[tavily_tool], prompt=system_prompt)
37
37
 
38
+ def get_message_text(msg: BaseMessage) -> str:
39
+ """LangChain-style safe message text extractor."""
40
+ if isinstance(msg.content, str):
41
+ return msg.content
42
+ if isinstance(msg.content, list):
43
+ return "".join(
44
+ block.get("text", "") for block in msg.content if block.get("type") == "text"
45
+ )
46
+ return ""
38
47
 
39
48
  class GraphState(BaseModel):
40
49
  company_name: str
@@ -61,7 +70,12 @@ Ensure that each section is clearly labeled and contains relevant, concise infor
61
70
 
62
71
  result = await research_agent.ainvoke(new_state)
63
72
 
64
- return GraphOutput(response=result["messages"][-1].content)
73
+ if isinstance(result, dict) and "messages" in result:
74
+ msg = result["messages"][-1]
75
+ else:
76
+ msg = result
77
+
78
+ return GraphOutput(response=get_message_text(msg))
65
79
 
66
80
 
67
81
  # Build the state graph
@@ -0,0 +1,256 @@
1
+ import uuid
2
+ from datetime import datetime
3
+ from typing import Optional
4
+
5
+ from langchain_core.messages import (
6
+ AIMessage,
7
+ AIMessageChunk,
8
+ BaseMessage,
9
+ HumanMessage,
10
+ ToolMessage,
11
+ )
12
+ from uipath.agent.conversation import (
13
+ UiPathConversationContentPartChunkEvent,
14
+ UiPathConversationContentPartEndEvent,
15
+ UiPathConversationContentPartEvent,
16
+ UiPathConversationContentPartStartEvent,
17
+ UiPathConversationEvent,
18
+ UiPathConversationExchangeEvent,
19
+ UiPathConversationMessageEndEvent,
20
+ UiPathConversationMessageEvent,
21
+ UiPathConversationMessageStartEvent,
22
+ UiPathConversationToolCallEndEvent,
23
+ UiPathConversationToolCallEvent,
24
+ UiPathConversationToolCallStartEvent,
25
+ UiPathInlineValue,
26
+ )
27
+
28
+
29
+ def _new_id() -> str:
30
+ return str(uuid.uuid4())
31
+
32
+
33
+ def _wrap_in_conversation_event(
34
+ msg_event: UiPathConversationMessageEvent,
35
+ exchange_id: Optional[str] = None,
36
+ conversation_id: Optional[str] = None,
37
+ ) -> UiPathConversationEvent:
38
+ """Helper to wrap a message event into a conversation-level event."""
39
+ return UiPathConversationEvent(
40
+ conversation_id=conversation_id or _new_id(),
41
+ exchange=UiPathConversationExchangeEvent(
42
+ exchange_id=exchange_id or _new_id(),
43
+ message=msg_event,
44
+ ),
45
+ )
46
+
47
+
48
+ def _extract_text(content) -> str:
49
+ """Normalize LangGraph message.content to plain text."""
50
+ if isinstance(content, str):
51
+ return content
52
+ if isinstance(content, list):
53
+ return "".join(
54
+ part.get("text", "")
55
+ for part in content
56
+ if isinstance(part, dict) and part.get("type") == "text"
57
+ )
58
+ return str(content or "")
59
+
60
+
61
+ def map_message(
62
+ message: BaseMessage,
63
+ exchange_id: Optional[str] = None,
64
+ conversation_id: Optional[str] = None,
65
+ ) -> Optional[UiPathConversationEvent]:
66
+ """Convert LangGraph BaseMessage (chunk or full) into a UiPathConversationEvent."""
67
+ message_id = getattr(message, "id", None) or _new_id()
68
+ timestamp = datetime.now().isoformat()
69
+
70
+ # --- Streaming AIMessageChunk ---
71
+ if isinstance(message, AIMessageChunk):
72
+ msg_event = UiPathConversationMessageEvent(
73
+ message_id=message.id or _new_id(),
74
+ )
75
+
76
+ if message.content == []:
77
+ msg_event.start = UiPathConversationMessageStartEvent(
78
+ role="assistant", timestamp=timestamp
79
+ )
80
+ msg_event.content_part = UiPathConversationContentPartEvent(
81
+ content_part_id=f"chunk-{message.id}-{0}",
82
+ start=UiPathConversationContentPartStartEvent(mime_type="text/plain"),
83
+ )
84
+
85
+ elif isinstance(message.content, list) and message.content:
86
+ for chunk in message.content:
87
+ if not isinstance(chunk, dict):
88
+ continue
89
+ idx = chunk.get("index", 0)
90
+ ctype = chunk.get("type")
91
+ id = chunk.get("id", f"chunk-{message.id}-{idx}")
92
+
93
+ # Start of a tool call
94
+ if ctype == "tool_use":
95
+ msg_event.tool_call = UiPathConversationToolCallEvent(
96
+ tool_call_id=id,
97
+ start=UiPathConversationToolCallStartEvent(
98
+ tool_name=chunk.get("name") or "",
99
+ arguments=UiPathInlineValue(inline=""),
100
+ timestamp=timestamp,
101
+ ),
102
+ )
103
+
104
+ # JSON args streaming (content part for tool args)
105
+ elif ctype == "input_json_delta":
106
+ text = chunk.get("partial_json", "")
107
+ # first delta: emit content part start + first chunk
108
+ if text == "":
109
+ msg_event.content_part = UiPathConversationContentPartEvent(
110
+ content_part_id=id,
111
+ start=UiPathConversationContentPartStartEvent(
112
+ mime_type="application/json"
113
+ ),
114
+ )
115
+ else:
116
+ msg_event.content_part = UiPathConversationContentPartEvent(
117
+ content_part_id=id,
118
+ chunk=UiPathConversationContentPartChunkEvent(
119
+ data=text,
120
+ content_part_sequence=idx,
121
+ ),
122
+ )
123
+
124
+ # Plain text from assistant
125
+ elif ctype == "text":
126
+ text = chunk.get("text", "")
127
+ msg_event.content_part = UiPathConversationContentPartEvent(
128
+ content_part_id=id,
129
+ chunk=UiPathConversationContentPartChunkEvent(
130
+ data=text,
131
+ content_part_sequence=idx,
132
+ ),
133
+ )
134
+
135
+ stop_reason = message.response_metadata.get("stop_reason")
136
+ if not message.content and stop_reason in ("tool_use", "end_turn"):
137
+ msg_event.end = UiPathConversationMessageEndEvent(timestamp=timestamp)
138
+
139
+ if (
140
+ msg_event.start
141
+ or msg_event.content_part
142
+ or msg_event.tool_call
143
+ or msg_event.end
144
+ ):
145
+ return _wrap_in_conversation_event(msg_event, exchange_id, conversation_id)
146
+
147
+ return None
148
+
149
+ text_content = _extract_text(message.content)
150
+
151
+ # --- HumanMessage ---
152
+ if isinstance(message, HumanMessage):
153
+ return _wrap_in_conversation_event(
154
+ UiPathConversationMessageEvent(
155
+ message_id=message_id,
156
+ start=UiPathConversationMessageStartEvent(
157
+ role="user", timestamp=timestamp
158
+ ),
159
+ content_part=UiPathConversationContentPartEvent(
160
+ content_part_id=f"cp-{message_id}",
161
+ start=UiPathConversationContentPartStartEvent(
162
+ mime_type="text/plain"
163
+ ),
164
+ chunk=UiPathConversationContentPartChunkEvent(data=text_content),
165
+ end=UiPathConversationContentPartEndEvent(),
166
+ ),
167
+ end=UiPathConversationMessageEndEvent(),
168
+ ),
169
+ exchange_id,
170
+ conversation_id,
171
+ )
172
+
173
+ # --- AIMessage ---
174
+ if isinstance(message, AIMessage):
175
+ # Extract first tool call if present
176
+ tool_calls = getattr(message, "tool_calls", []) or []
177
+ first_tc = tool_calls[0] if tool_calls else None
178
+
179
+ return _wrap_in_conversation_event(
180
+ UiPathConversationMessageEvent(
181
+ message_id=message_id,
182
+ start=UiPathConversationMessageStartEvent(
183
+ role="assistant", timestamp=timestamp
184
+ ),
185
+ content_part=(
186
+ UiPathConversationContentPartEvent(
187
+ content_part_id=f"cp-{message_id}",
188
+ start=UiPathConversationContentPartStartEvent(
189
+ mime_type="text/plain"
190
+ ),
191
+ chunk=UiPathConversationContentPartChunkEvent(
192
+ data=text_content
193
+ ),
194
+ end=UiPathConversationContentPartEndEvent(),
195
+ )
196
+ if text_content
197
+ else None
198
+ ),
199
+ tool_call=(
200
+ UiPathConversationToolCallEvent(
201
+ tool_call_id=first_tc.get("id") or _new_id(),
202
+ start=UiPathConversationToolCallStartEvent(
203
+ tool_name=first_tc.get("name"),
204
+ arguments=UiPathInlineValue(
205
+ inline=str(first_tc.get("args", ""))
206
+ ),
207
+ timestamp=timestamp,
208
+ ),
209
+ )
210
+ if first_tc
211
+ else None
212
+ ),
213
+ end=UiPathConversationMessageEndEvent(),
214
+ ),
215
+ exchange_id,
216
+ conversation_id,
217
+ )
218
+
219
+ # --- ToolMessage ---
220
+ if isinstance(message, ToolMessage):
221
+ return _wrap_in_conversation_event(
222
+ UiPathConversationMessageEvent(
223
+ message_id=message_id,
224
+ tool_call=UiPathConversationToolCallEvent(
225
+ tool_call_id=message.tool_call_id,
226
+ start=UiPathConversationToolCallStartEvent(
227
+ tool_name=message.name or "",
228
+ arguments=UiPathInlineValue(inline=""),
229
+ timestamp=timestamp,
230
+ ),
231
+ end=UiPathConversationToolCallEndEvent(
232
+ timestamp=timestamp,
233
+ result=UiPathInlineValue(inline=message.content),
234
+ ),
235
+ ),
236
+ ),
237
+ exchange_id,
238
+ conversation_id,
239
+ )
240
+
241
+ # --- Fallback ---
242
+ return _wrap_in_conversation_event(
243
+ UiPathConversationMessageEvent(
244
+ message_id=message_id,
245
+ start=UiPathConversationMessageStartEvent(
246
+ role="assistant", timestamp=timestamp
247
+ ),
248
+ content_part=UiPathConversationContentPartEvent(
249
+ content_part_id=f"cp-{message_id}",
250
+ chunk=UiPathConversationContentPartChunkEvent(data=text_content),
251
+ ),
252
+ end=UiPathConversationMessageEndEvent(),
253
+ ),
254
+ exchange_id,
255
+ conversation_id,
256
+ )
@@ -20,6 +20,7 @@ from ..._utils import _instrument_traceable_attributes
20
20
  from ...tracers import AsyncUiPathTracer
21
21
  from .._utils._graph import LangGraphConfig
22
22
  from ._context import LangGraphRuntimeContext
23
+ from ._conversation import map_message
23
24
  from ._exception import LangGraphRuntimeError
24
25
  from ._input import LangGraphInputProcessor
25
26
  from ._output import LangGraphOutputProcessor
@@ -98,8 +99,27 @@ class LangGraphRuntime(UiPathBaseRuntime):
98
99
  if max_concurrency is not None:
99
100
  graph_config["max_concurrency"] = int(max_concurrency)
100
101
 
102
+ if self.context.chat_handler:
103
+ async for stream_chunk in graph.astream(
104
+ processed_input,
105
+ graph_config,
106
+ stream_mode="messages",
107
+ subgraphs=True,
108
+ ):
109
+ if not isinstance(stream_chunk, tuple) or len(stream_chunk) < 2:
110
+ continue
111
+
112
+ _, (message, _) = stream_chunk
113
+ event = map_message(
114
+ message=message,
115
+ conversation_id=self.context.execution_id,
116
+ exchange_id=self.context.execution_id,
117
+ )
118
+ if event:
119
+ self.context.chat_handler.on_event(event)
120
+
101
121
  # Stream the output at debug time
102
- if self.is_debug_run():
122
+ elif self.is_debug_run():
103
123
  # Get final chunk while streaming
104
124
  final_chunk = None
105
125
  async for stream_chunk in graph.astream(
@@ -2229,6 +2229,12 @@ crypto = [
2229
2229
  { name = "cryptography" },
2230
2230
  ]
2231
2231
 
2232
+ [[package]]
2233
+ name = "pyperclip"
2234
+ version = "1.9.0"
2235
+ source = { registry = "https://pypi.org/simple" }
2236
+ sdist = { url = "https://files.pythonhosted.org/packages/30/23/2f0a3efc4d6a32f3b63cdff36cd398d9701d26cda58e3ab97ac79fb5e60d/pyperclip-1.9.0.tar.gz", hash = "sha256:b7de0142ddc81bfc5c7507eea19da920b92252b548b96186caf94a5e2527d310", size = 20961, upload-time = "2024-06-18T20:38:48.401Z" }
2237
+
2232
2238
  [[package]]
2233
2239
  name = "pytest"
2234
2240
  version = "8.4.1"
@@ -2740,7 +2746,7 @@ wheels = [
2740
2746
 
2741
2747
  [[package]]
2742
2748
  name = "uipath"
2743
- version = "2.1.33"
2749
+ version = "2.1.38"
2744
2750
  source = { registry = "https://pypi.org/simple" }
2745
2751
  dependencies = [
2746
2752
  { name = "azure-monitor-opentelemetry" },
@@ -2750,6 +2756,7 @@ dependencies = [
2750
2756
  { name = "opentelemetry-sdk" },
2751
2757
  { name = "pathlib" },
2752
2758
  { name = "pydantic" },
2759
+ { name = "pyperclip" },
2753
2760
  { name = "python-dotenv" },
2754
2761
  { name = "rich" },
2755
2762
  { name = "tenacity" },
@@ -2757,14 +2764,14 @@ dependencies = [
2757
2764
  { name = "tomli" },
2758
2765
  { name = "truststore" },
2759
2766
  ]
2760
- sdist = { url = "https://files.pythonhosted.org/packages/fb/5b/6cdab558c7d34652c01a6f083e53c406f99bcedffd82a9097414db6d36e8/uipath-2.1.33.tar.gz", hash = "sha256:17f6a6062056ccf502d72770692c1ca96e5be6190e5648bb1ee0df93806caa6f", size = 1976249, upload-time = "2025-09-04T15:03:22.551Z" }
2767
+ sdist = { url = "https://files.pythonhosted.org/packages/2b/de/54ab0f9dc3081dff136271d19259162dbbfb0917a2ffcce16cc55062d715/uipath-2.1.38.tar.gz", hash = "sha256:d9d32e87dcafba89c642ba53c4bdb24100e7ca5efbdb7c4bfec3a8aee62fcd61", size = 1984272, upload-time = "2025-09-09T05:27:29.744Z" }
2761
2768
  wheels = [
2762
- { url = "https://files.pythonhosted.org/packages/21/3b/ef1f1d1a23bba6aaa800fb74415dab56cdcb317b99d9c97392bd2043bbbd/uipath-2.1.33-py3-none-any.whl", hash = "sha256:6f9f8b35724517981bb14aa0b408e691eeefdf3b06cb7f8786562884639accff", size = 200206, upload-time = "2025-09-04T15:03:20.755Z" },
2769
+ { url = "https://files.pythonhosted.org/packages/c7/56/ee8e70825279938f7105edaa3ddc91c559c5c4e1f4b5df3cc86d7f31484c/uipath-2.1.38-py3-none-any.whl", hash = "sha256:cd78cb4b0cdab2ee8372dc573e3892684db08074586c2580c163f6a98dca05bb", size = 212810, upload-time = "2025-09-09T05:27:27.691Z" },
2763
2770
  ]
2764
2771
 
2765
2772
  [[package]]
2766
2773
  name = "uipath-langchain"
2767
- version = "0.0.125"
2774
+ version = "0.0.126"
2768
2775
  source = { editable = "." }
2769
2776
  dependencies = [
2770
2777
  { name = "httpx" },
@@ -2808,7 +2815,7 @@ requires-dist = [
2808
2815
  { name = "openinference-instrumentation-langchain", specifier = ">=0.1.50" },
2809
2816
  { name = "pydantic-settings", specifier = ">=2.6.0" },
2810
2817
  { name = "python-dotenv", specifier = ">=1.0.1" },
2811
- { name = "uipath", specifier = ">=2.1.33,<2.2.0" },
2818
+ { name = "uipath", specifier = ">=2.1.38,<2.2.0" },
2812
2819
  { name = "uipath-langchain", marker = "extra == 'langchain'", specifier = ">=0.0.2" },
2813
2820
  ]
2814
2821
  provides-extras = ["langchain"]