uipath-langchain 0.0.144__tar.gz → 0.0.145__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.
Files changed (300) hide show
  1. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/PKG-INFO +2 -2
  2. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/pyproject.toml +3 -3
  3. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_cli/_runtime/_runtime.py +19 -0
  4. uipath_langchain-0.0.145/src/uipath_langchain/_cli/_utils/_schema.py +85 -0
  5. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_cli/cli_eval.py +3 -9
  6. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_cli/cli_init.py +3 -83
  7. uipath_langchain-0.0.145/src/uipath_langchain/runtime_factories.py +21 -0
  8. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/uv.lock +6 -6
  9. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/.cursorrules +0 -0
  10. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/.editorconfig +0 -0
  11. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/.gitattributes +0 -0
  12. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/.github/workflows/cd.yml +0 -0
  13. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/.github/workflows/ci.yml +0 -0
  14. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/.github/workflows/commitlint.yml +0 -0
  15. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/.github/workflows/integration_tests.yml +0 -0
  16. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/.github/workflows/lint-custom-version.yml +0 -0
  17. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/.github/workflows/lint.yml +0 -0
  18. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/.github/workflows/publish-dev.yml +0 -0
  19. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/.github/workflows/publish-docs.yml +0 -0
  20. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/.github/workflows/publish-prior-stable-version.yml +0 -0
  21. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/.github/workflows/slack.yml +0 -0
  22. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/.github/workflows/test-custom-version.yml +0 -0
  23. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/.github/workflows/test.yml +0 -0
  24. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/.gitignore +0 -0
  25. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/.pre-commit-config.yaml +0 -0
  26. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/.python-version +0 -0
  27. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/.vscode/extensions.json +0 -0
  28. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/.vscode/settings.json +0 -0
  29. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/CONTRIBUTING.md +0 -0
  30. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/LICENSE +0 -0
  31. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/README.md +0 -0
  32. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/chat_models.md +0 -0
  33. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/context_grounding.md +0 -0
  34. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/human_in_the_loop.md +0 -0
  35. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/quick_start.md +0 -0
  36. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/quick_start_images/cloud_env_var_dark.png +0 -0
  37. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/quick_start_images/cloud_env_var_light.png +0 -0
  38. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/quick_start_images/invoke_output_dark.png +0 -0
  39. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/quick_start_images/invoke_output_light.png +0 -0
  40. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/RAG/click-storage-bucket.png +0 -0
  41. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/RAG/create-index-1.png +0 -0
  42. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/RAG/create-index-2.png +0 -0
  43. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/RAG/create-process.png +0 -0
  44. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/RAG/create-quiz-generator.png +0 -0
  45. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/RAG/create-storage-bucket-1.png +0 -0
  46. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/RAG/create-storage-bucket-2.png +0 -0
  47. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/RAG/folder-path.png +0 -0
  48. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/RAG/job-info.png +0 -0
  49. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/RAG/output.png +0 -0
  50. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/RAG/process-page.png +0 -0
  51. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/RAG/researcher-1.png +0 -0
  52. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/RAG/researcher-2.png +0 -0
  53. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/RAG/run-process-1.png +0 -0
  54. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/RAG/run-process-2.png +0 -0
  55. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/RAG/storage-bucket-content.png +0 -0
  56. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/multi-agent-distributed/coder-agent-package-overview.png +0 -0
  57. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/multi-agent-distributed/coder-agent-process-configuration.png +0 -0
  58. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/multi-agent-distributed/planner-agent-package-overview.png +0 -0
  59. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/multi-agent-distributed/planner-agent-process-configuration.png +0 -0
  60. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/multi-agent-distributed/researcher-agent-package-overview.png +0 -0
  61. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/multi-agent-distributed/researcher-agent-process-configuration.png +0 -0
  62. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/ticket-classification/activate-apps.png +0 -0
  63. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/ticket-classification/activate-deployment.png +0 -0
  64. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/ticket-classification/copy-folder-path.png +0 -0
  65. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/ticket-classification/deploy-solution-package-wizard.png +0 -0
  66. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/ticket-classification/deploy-solution-package.png +0 -0
  67. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/ticket-classification/monitor-agent.png +0 -0
  68. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/ticket-classification/navigate-to-solution-folder.png +0 -0
  69. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/ticket-classification/resume-condition.png +0 -0
  70. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/ticket-classification/run-agent.png +0 -0
  71. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/ticket-classification/solution-destination-folder.png +0 -0
  72. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/ticket-classification/start-job.png +0 -0
  73. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/docs/sample_images/ticket-classification/upload-solution-package.png +0 -0
  74. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/RAG-quiz-generator/README.md +0 -0
  75. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/RAG-quiz-generator/env.example +0 -0
  76. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/RAG-quiz-generator/input.example/quiz-generator-debug-input.json +0 -0
  77. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/RAG-quiz-generator/input.example/researcher-debug-input.json +0 -0
  78. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/RAG-quiz-generator/langgraph.json +0 -0
  79. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/RAG-quiz-generator/pyproject.toml +0 -0
  80. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/RAG-quiz-generator/quiz-generator-RAG-agent.mermaid +0 -0
  81. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/RAG-quiz-generator/researcher-RAG-agent.mermaid +0 -0
  82. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/RAG-quiz-generator/src/agents/quiz-generator-RAG-agent.py +0 -0
  83. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/RAG-quiz-generator/src/agents/researcher-RAG-agent.py +0 -0
  84. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/RAG-quiz-generator/uipath.json +0 -0
  85. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/RAG-quiz-generator/uv.lock +0 -0
  86. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/README.md +0 -0
  87. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/calculator-agent/graph.py +0 -0
  88. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/calculator-agent/langgraph.json +0 -0
  89. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/calculator-agent/pyproject.toml +0 -0
  90. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/calculator-agent/uipath.json +0 -0
  91. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/calculator-agent/uv.lock +0 -0
  92. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/chat-agent/.env.example +0 -0
  93. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/chat-agent/agent.mermaid +0 -0
  94. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/chat-agent/graph.py +0 -0
  95. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/chat-agent/langgraph.json +0 -0
  96. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/chat-agent/pyproject.toml +0 -0
  97. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/chat-agent/uipath.json +0 -0
  98. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/chat-agent/uv.lock +0 -0
  99. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/company-research-agent/.env.example +0 -0
  100. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/company-research-agent/agent.mermaid +0 -0
  101. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/company-research-agent/graph.py +0 -0
  102. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/company-research-agent/langgraph.json +0 -0
  103. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/company-research-agent/pyproject.toml +0 -0
  104. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/company-research-agent/uipath.json +0 -0
  105. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/company-research-agent/uv.lock +0 -0
  106. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/email-organizer-agent/.env.template +0 -0
  107. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/email-organizer-agent/.python-version +0 -0
  108. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/email-organizer-agent/.vscode/launch.json +0 -0
  109. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/email-organizer-agent/README.md +0 -0
  110. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/email-organizer-agent/agent.mermaid +0 -0
  111. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/email-organizer-agent/input.json +0 -0
  112. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/email-organizer-agent/langgraph.json +0 -0
  113. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/email-organizer-agent/pyproject.toml +0 -0
  114. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/email-organizer-agent/src/email_organizer/__init__.py +0 -0
  115. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/email-organizer-agent/src/email_organizer/main.py +0 -0
  116. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/email-organizer-agent/src/email_organizer/outlook_client.py +0 -0
  117. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/email-organizer-agent/uipath.json +0 -0
  118. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/email-organizer-agent/uv.lock +0 -0
  119. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/hitl-inbox-server/database.py +0 -0
  120. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/hitl-inbox-server/main.py +0 -0
  121. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/hitl-inbox-server/models.py +0 -0
  122. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/hitl-inbox-server/pyproject.toml +0 -0
  123. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/hitl-inbox-server/schemas.py +0 -0
  124. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/hitl-inbox-server/templates/index.html +0 -0
  125. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/hitl-inbox-server/uv.lock +0 -0
  126. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/multi-agent-planner-researcher-coder-distributed/.env.example +0 -0
  127. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/multi-agent-planner-researcher-coder-distributed/README.md +0 -0
  128. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/multi-agent-planner-researcher-coder-distributed/coder.mermaid +0 -0
  129. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/multi-agent-planner-researcher-coder-distributed/langgraph.json +0 -0
  130. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/multi-agent-planner-researcher-coder-distributed/planner.mermaid +0 -0
  131. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/multi-agent-planner-researcher-coder-distributed/pyproject.toml +0 -0
  132. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/multi-agent-planner-researcher-coder-distributed/researcher.mermaid +0 -0
  133. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/multi-agent-planner-researcher-coder-distributed/src/multi-agent-distributed/coder.py +0 -0
  134. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/multi-agent-planner-researcher-coder-distributed/src/multi-agent-distributed/planner.py +0 -0
  135. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/multi-agent-planner-researcher-coder-distributed/src/multi-agent-distributed/researcher.py +0 -0
  136. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/multi-agent-planner-researcher-coder-distributed/uipath.json +0 -0
  137. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/multi-agent-planner-researcher-coder-distributed/uv.lock +0 -0
  138. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/multi-agent-supervisor-researcher-coder/.env.example +0 -0
  139. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/multi-agent-supervisor-researcher-coder/README.md +0 -0
  140. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/multi-agent-supervisor-researcher-coder/agent.mermaid +0 -0
  141. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/multi-agent-supervisor-researcher-coder/graph.py +0 -0
  142. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/multi-agent-supervisor-researcher-coder/langgraph.json +0 -0
  143. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/multi-agent-supervisor-researcher-coder/pyproject.toml +0 -0
  144. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/multi-agent-supervisor-researcher-coder/uipath.json +0 -0
  145. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/multi-agent-supervisor-researcher-coder/uv.lock +0 -0
  146. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/oauth-external-apps-agent/.env.example +0 -0
  147. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/oauth-external-apps-agent/README.md +0 -0
  148. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/oauth-external-apps-agent/input.json +0 -0
  149. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/oauth-external-apps-agent/langgraph.json +0 -0
  150. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/oauth-external-apps-agent/main.py +0 -0
  151. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/oauth-external-apps-agent/pyproject.toml +0 -0
  152. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/oauth-external-apps-agent/uv.lock +0 -0
  153. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/retrieval-chain/.env.example +0 -0
  154. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/retrieval-chain/README.md +0 -0
  155. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/retrieval-chain/main.py +0 -0
  156. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/retrieval-chain/pyproject.toml +0 -0
  157. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/retrieval-chain/uipath.json +0 -0
  158. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/retrieval-chain/uv.lock +0 -0
  159. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/simple-local-mcp/.env.example +0 -0
  160. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/simple-local-mcp/README.md +0 -0
  161. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/simple-local-mcp/agent.mermaid +0 -0
  162. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/simple-local-mcp/langgraph.json +0 -0
  163. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/simple-local-mcp/pyproject.toml +0 -0
  164. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/simple-local-mcp/src/simple-local-mcp/graph.py +0 -0
  165. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/simple-local-mcp/src/simple-local-mcp/math_server.py +0 -0
  166. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/simple-local-mcp/src/simple-local-mcp/weather_server.py +0 -0
  167. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/simple-local-mcp/uipath.json +0 -0
  168. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/simple-local-mcp/uv.lock +0 -0
  169. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/simple-remote-mcp/.env.example +0 -0
  170. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/simple-remote-mcp/README.md +0 -0
  171. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/simple-remote-mcp/agent.mermaid +0 -0
  172. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/simple-remote-mcp/langgraph.json +0 -0
  173. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/simple-remote-mcp/main.py +0 -0
  174. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/simple-remote-mcp/pyproject.toml +0 -0
  175. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/simple-remote-mcp/uipath.json +0 -0
  176. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/simple-remote-mcp/uv.lock +0 -0
  177. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/ticket-classification/.env.example +0 -0
  178. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/ticket-classification/README.md +0 -0
  179. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/ticket-classification/agent.mermaid +0 -0
  180. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/ticket-classification/escalation_app_solution/generic-escalation-app-solution-1.0.0.zip +0 -0
  181. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/ticket-classification/langgraph.json +0 -0
  182. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/ticket-classification/main.py +0 -0
  183. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/ticket-classification/pyproject.toml +0 -0
  184. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/ticket-classification/uipath.json +0 -0
  185. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/samples/ticket-classification/uv.lock +0 -0
  186. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/__init__.py +0 -0
  187. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_cli/__init__.py +0 -0
  188. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_cli/_runtime/_context.py +0 -0
  189. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_cli/_runtime/_conversation.py +0 -0
  190. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_cli/_runtime/_exception.py +0 -0
  191. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_cli/_runtime/_graph_resolver.py +0 -0
  192. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_cli/_runtime/_input.py +0 -0
  193. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_cli/_runtime/_output.py +0 -0
  194. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_cli/_templates/langgraph.json.template +0 -0
  195. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_cli/_templates/main.py.template +0 -0
  196. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_cli/_utils/_graph.py +0 -0
  197. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_cli/cli_debug.py +0 -0
  198. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_cli/cli_dev.py +0 -0
  199. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_cli/cli_new.py +0 -0
  200. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_cli/cli_run.py +0 -0
  201. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_resources/AGENTS.md +0 -0
  202. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_resources/REQUIRED_STRUCTURE.md +0 -0
  203. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_tracing/__init__.py +0 -0
  204. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_tracing/_instrument_traceable.py +0 -0
  205. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_tracing/_utils.py +0 -0
  206. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_utils/__init__.py +0 -0
  207. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_utils/_request_mixin.py +0 -0
  208. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_utils/_settings.py +0 -0
  209. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/_utils/_sleep_policy.py +0 -0
  210. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/agent/react/__init__.py +0 -0
  211. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/agent/react/agent.py +0 -0
  212. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/agent/react/constants.py +0 -0
  213. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/agent/react/exceptions.py +0 -0
  214. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/agent/react/init_node.py +0 -0
  215. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/agent/react/llm_node.py +0 -0
  216. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/agent/react/router.py +0 -0
  217. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/agent/react/state.py +0 -0
  218. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/agent/react/terminate_node.py +0 -0
  219. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/agent/react/tools/__init__.py +0 -0
  220. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/agent/react/tools/tools.py +0 -0
  221. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/agent/react/utils.py +0 -0
  222. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/agent/tools/__init__.py +0 -0
  223. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/agent/tools/context_tool.py +0 -0
  224. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/agent/tools/process_tool.py +0 -0
  225. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/agent/tools/tool_factory.py +0 -0
  226. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/agent/tools/tool_node.py +0 -0
  227. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/agent/tools/utils.py +0 -0
  228. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/chat/__init__.py +0 -0
  229. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/chat/models.py +0 -0
  230. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/embeddings/__init__.py +0 -0
  231. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/embeddings/embeddings.py +0 -0
  232. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/middlewares.py +0 -0
  233. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/py.typed +0 -0
  234. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/retrievers/__init__.py +0 -0
  235. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/retrievers/context_grounding_retriever.py +0 -0
  236. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/tools/__init__.py +0 -0
  237. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/tools/preconfigured.py +0 -0
  238. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/vectorstores/__init__.py +0 -0
  239. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/src/uipath_langchain/vectorstores/context_grounding_vectorstore.py +0 -0
  240. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/common/trace_assert.py +0 -0
  241. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/common/validate_output.sh +0 -0
  242. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/company-research-agent/expected_raw.json +0 -0
  243. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/company-research-agent/expected_traces.json +0 -0
  244. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/company-research-agent/input.json +0 -0
  245. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/company-research-agent/langgraph.json +0 -0
  246. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/company-research-agent/pyproject.toml +0 -0
  247. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/company-research-agent/run.sh +0 -0
  248. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/company-research-agent/src/assert.py +0 -0
  249. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/company-research-agent/src/graph.py +0 -0
  250. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/company-research-agent/uv.lock +0 -0
  251. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/init-flow/expected_traces.json +0 -0
  252. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/init-flow/input.json +0 -0
  253. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/init-flow/pyproject.toml +0 -0
  254. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/init-flow/run.sh +0 -0
  255. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/init-flow/src/assert.py +0 -0
  256. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/simple-local-mcp/expected_traces.json +0 -0
  257. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/simple-local-mcp/input.json +0 -0
  258. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/simple-local-mcp/langgraph.json +0 -0
  259. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/simple-local-mcp/pyproject.toml +0 -0
  260. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/simple-local-mcp/run.sh +0 -0
  261. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/simple-local-mcp/src/assert.py +0 -0
  262. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/simple-local-mcp/src/simple-local-mcp/graph.py +0 -0
  263. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/simple-local-mcp/src/simple-local-mcp/math_server.py +0 -0
  264. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/simple-local-mcp/src/simple-local-mcp/weather_server.py +0 -0
  265. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/simple-local-mcp/uv.lock +0 -0
  266. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/ticket-classification/expected_traces.json +0 -0
  267. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/ticket-classification/input.json +0 -0
  268. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/ticket-classification/langgraph.json +0 -0
  269. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/ticket-classification/pyproject.toml +0 -0
  270. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/ticket-classification/raw_traces.jsonl +0 -0
  271. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/ticket-classification/run.sh +0 -0
  272. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/ticket-classification/src/assert.py +0 -0
  273. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/ticket-classification/src/main.py +0 -0
  274. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/testcases/ticket-classification/uv.lock +0 -0
  275. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/__init__.py +0 -0
  276. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/agent/react/__init__.py +0 -0
  277. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/agent/react/test_utils.py +0 -0
  278. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/cli/conftest.py +0 -0
  279. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/cli/mocks/langgraph.json +0 -0
  280. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/cli/mocks/simple_agent.py +0 -0
  281. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/cli/mocks/uipath.json +0 -0
  282. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/cli/test_init.py +0 -0
  283. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/cli/test_run.py +0 -0
  284. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/hitl/__init__.py +0 -0
  285. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/hitl/conftest.py +0 -0
  286. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/hitl/mocks/action_trigger_hitl.py +0 -0
  287. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/hitl/mocks/api_trigger_hitl.py +0 -0
  288. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/hitl/mocks/job_trigger_hitl.py +0 -0
  289. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/hitl/mocks/langgraph.json +0 -0
  290. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/hitl/mocks/uipath-default-escalation.json +0 -0
  291. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/hitl/mocks/uipath.json +0 -0
  292. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/hitl/test_action_trigger.py +0 -0
  293. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/hitl/test_hitl_api_trigger.py +0 -0
  294. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/hitl/test_hitl_default_escalation.py +0 -0
  295. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/hitl/test_hitl_job_trigger.py +0 -0
  296. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/test_dummy.py +0 -0
  297. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/tools/__init__.py +0 -0
  298. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/tools/conftest.py +0 -0
  299. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/tools/mocks/agent_definition.json +0 -0
  300. {uipath_langchain-0.0.144 → uipath_langchain-0.0.145}/tests/tools/test_preconfigured.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: uipath-langchain
3
- Version: 0.0.144
3
+ Version: 0.0.145
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
@@ -26,7 +26,7 @@ Requires-Dist: openai>=1.65.5
26
26
  Requires-Dist: openinference-instrumentation-langchain>=0.1.50
27
27
  Requires-Dist: pydantic-settings>=2.6.0
28
28
  Requires-Dist: python-dotenv>=1.0.1
29
- Requires-Dist: uipath<2.2.0,>=2.1.103
29
+ Requires-Dist: uipath<2.2.0,>=2.1.110
30
30
  Provides-Extra: langchain
31
31
  Description-Content-Type: text/markdown
32
32
 
@@ -1,11 +1,11 @@
1
1
  [project]
2
2
  name = "uipath-langchain"
3
- version = "0.0.144"
3
+ version = "0.0.145"
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.103, <2.2.0",
8
+ "uipath>=2.1.110, <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",
@@ -111,4 +111,4 @@ asyncio_mode = "auto"
111
111
  name = "testpypi"
112
112
  url = "https://test.pypi.org/simple/"
113
113
  publish-url = "https://test.pypi.org/legacy/"
114
- explicit = true
114
+ explicit = true
@@ -2,12 +2,14 @@ import logging
2
2
  import os
3
3
  from contextlib import asynccontextmanager
4
4
  from typing import Any, AsyncGenerator, AsyncIterator, Optional, Sequence
5
+ from uuid import uuid4
5
6
 
6
7
  from langchain_core.runnables.config import RunnableConfig
7
8
  from langgraph.checkpoint.sqlite.aio import AsyncSqliteSaver
8
9
  from langgraph.errors import EmptyInputError, GraphRecursionError, InvalidUpdateError
9
10
  from langgraph.graph.state import CompiledStateGraph, StateGraph
10
11
  from langgraph.types import Interrupt, StateSnapshot
12
+ from typing_extensions import override
11
13
  from uipath._cli._runtime._contracts import (
12
14
  UiPathBaseRuntime,
13
15
  UiPathBreakpointResult,
@@ -17,12 +19,14 @@ from uipath._cli._runtime._contracts import (
17
19
  UiPathRuntimeResult,
18
20
  UiPathRuntimeStatus,
19
21
  )
22
+ from uipath._cli.models.runtime_schema import Entrypoint
20
23
  from uipath._events._events import (
21
24
  UiPathAgentMessageEvent,
22
25
  UiPathAgentStateEvent,
23
26
  UiPathRuntimeEvent,
24
27
  )
25
28
 
29
+ from .._utils._schema import generate_schema_from_graph
26
30
  from ._context import LangGraphRuntimeContext
27
31
  from ._exception import LangGraphErrorCode, LangGraphRuntimeError
28
32
  from ._graph_resolver import AsyncResolver, LangGraphJsonResolver
@@ -481,6 +485,21 @@ class LangGraphScriptRuntime(LangGraphRuntime):
481
485
  self.resolver = LangGraphJsonResolver(entrypoint=entrypoint)
482
486
  super().__init__(context, self.resolver)
483
487
 
488
+ @override
489
+ async def get_entrypoint(self) -> Entrypoint:
490
+ """Get entrypoint for this LangGraph runtime."""
491
+ graph = await self.resolver()
492
+ compiled_graph = graph.compile()
493
+ schema = generate_schema_from_graph(compiled_graph)
494
+
495
+ return Entrypoint(
496
+ file_path=self.context.entrypoint, # type: ignore[call-arg]
497
+ unique_id=str(uuid4()),
498
+ type="agent",
499
+ input=schema["input"],
500
+ output=schema["output"],
501
+ )
502
+
484
503
  async def cleanup(self) -> None:
485
504
  """Cleanup runtime resources including resolver."""
486
505
  await super().cleanup()
@@ -0,0 +1,85 @@
1
+ from typing import Any, Dict
2
+
3
+ from langgraph.graph.state import CompiledStateGraph
4
+
5
+
6
+ def resolve_refs(schema, root=None):
7
+ """Recursively resolves $ref references in a JSON schema."""
8
+ if root is None:
9
+ root = schema # Store the root schema to resolve $refs
10
+
11
+ if isinstance(schema, dict):
12
+ if "$ref" in schema:
13
+ ref_path = schema["$ref"].lstrip("#/").split("/")
14
+ ref_schema = root
15
+ for part in ref_path:
16
+ ref_schema = ref_schema.get(part, {})
17
+ return resolve_refs(ref_schema, root)
18
+
19
+ return {k: resolve_refs(v, root) for k, v in schema.items()}
20
+
21
+ elif isinstance(schema, list):
22
+ return [resolve_refs(item, root) for item in schema]
23
+
24
+ return schema
25
+
26
+
27
+ def process_nullable_types(
28
+ schema: Dict[str, Any] | list[Any] | Any,
29
+ ) -> Dict[str, Any] | list[Any]:
30
+ """Process the schema to handle nullable types by removing anyOf with null and keeping the base type."""
31
+ if isinstance(schema, dict):
32
+ if "anyOf" in schema and len(schema["anyOf"]) == 2:
33
+ types = [t.get("type") for t in schema["anyOf"]]
34
+ if "null" in types:
35
+ non_null_type = next(
36
+ t for t in schema["anyOf"] if t.get("type") != "null"
37
+ )
38
+ return non_null_type
39
+
40
+ return {k: process_nullable_types(v) for k, v in schema.items()}
41
+ elif isinstance(schema, list):
42
+ return [process_nullable_types(item) for item in schema]
43
+ return schema
44
+
45
+
46
+ def generate_schema_from_graph(
47
+ graph: CompiledStateGraph[Any, Any, Any],
48
+ ) -> Dict[str, Any]:
49
+ """Extract input/output schema from a LangGraph graph"""
50
+ schema = {
51
+ "input": {"type": "object", "properties": {}, "required": []},
52
+ "output": {"type": "object", "properties": {}, "required": []},
53
+ }
54
+
55
+ if hasattr(graph, "input_schema"):
56
+ if hasattr(graph.input_schema, "model_json_schema"):
57
+ input_schema = graph.input_schema.model_json_schema()
58
+ unpacked_ref_def_properties = resolve_refs(input_schema)
59
+
60
+ # Process the schema to handle nullable types
61
+ processed_properties = process_nullable_types(
62
+ unpacked_ref_def_properties.get("properties", {})
63
+ )
64
+
65
+ schema["input"]["properties"] = processed_properties
66
+ schema["input"]["required"] = unpacked_ref_def_properties.get(
67
+ "required", []
68
+ )
69
+
70
+ if hasattr(graph, "output_schema"):
71
+ if hasattr(graph.output_schema, "model_json_schema"):
72
+ output_schema = graph.output_schema.model_json_schema()
73
+ unpacked_ref_def_properties = resolve_refs(output_schema)
74
+
75
+ # Process the schema to handle nullable types
76
+ processed_properties = process_nullable_types(
77
+ unpacked_ref_def_properties.get("properties", {})
78
+ )
79
+
80
+ schema["output"]["properties"] = processed_properties
81
+ schema["output"]["required"] = unpacked_ref_def_properties.get(
82
+ "required", []
83
+ )
84
+
85
+ return schema
@@ -6,8 +6,9 @@ from openinference.instrumentation.langchain import (
6
6
  get_current_span,
7
7
  )
8
8
  from uipath._cli._evals._console_progress_reporter import ConsoleProgressReporter
9
+ from uipath._cli._evals._evaluate import evaluate
9
10
  from uipath._cli._evals._progress_reporter import StudioWebProgressReporter
10
- from uipath._cli._evals._runtime import UiPathEvalContext, UiPathEvalRuntime
11
+ from uipath._cli._evals._runtime import UiPathEvalContext
11
12
  from uipath._cli._runtime._contracts import (
12
13
  UiPathRuntimeFactory,
13
14
  )
@@ -82,14 +83,7 @@ def langgraph_eval_middleware(
82
83
 
83
84
  runtime_factory.add_instrumentor(LangChainInstrumentor, get_current_span)
84
85
 
85
- async def execute():
86
- async with UiPathEvalRuntime.from_eval_context(
87
- factory=runtime_factory, context=eval_context, event_bus=event_bus
88
- ) as eval_runtime:
89
- await eval_runtime.execute()
90
- await event_bus.wait_for_all()
91
-
92
- asyncio.run(execute())
86
+ asyncio.run(evaluate(runtime_factory, eval_context, event_bus))
93
87
  return MiddlewareResult(should_continue=False)
94
88
 
95
89
  except Exception as e:
@@ -6,7 +6,7 @@ import shutil
6
6
  import uuid
7
7
  from collections.abc import Generator
8
8
  from enum import Enum
9
- from typing import Any, Callable, Dict, overload
9
+ from typing import Any, Callable, overload
10
10
 
11
11
  import click
12
12
  from langgraph.graph.state import CompiledStateGraph
@@ -14,6 +14,8 @@ from uipath._cli._utils._console import ConsoleLogger
14
14
  from uipath._cli._utils._parse_ast import generate_bindings_json # type: ignore
15
15
  from uipath._cli.middlewares import MiddlewareResult
16
16
 
17
+ from uipath_langchain._cli._utils._schema import generate_schema_from_graph
18
+
17
19
  from ._utils._graph import LangGraphConfig
18
20
 
19
21
  console = ConsoleLogger()
@@ -27,88 +29,6 @@ class FileOperationStatus(str, Enum):
27
29
  SKIPPED = "skipped"
28
30
 
29
31
 
30
- def resolve_refs(schema, root=None):
31
- """Recursively resolves $ref references in a JSON schema."""
32
- if root is None:
33
- root = schema # Store the root schema to resolve $refs
34
-
35
- if isinstance(schema, dict):
36
- if "$ref" in schema:
37
- ref_path = schema["$ref"].lstrip("#/").split("/")
38
- ref_schema = root
39
- for part in ref_path:
40
- ref_schema = ref_schema.get(part, {})
41
- return resolve_refs(ref_schema, root)
42
-
43
- return {k: resolve_refs(v, root) for k, v in schema.items()}
44
-
45
- elif isinstance(schema, list):
46
- return [resolve_refs(item, root) for item in schema]
47
-
48
- return schema
49
-
50
-
51
- def process_nullable_types(
52
- schema: Dict[str, Any] | list[Any] | Any,
53
- ) -> Dict[str, Any] | list[Any]:
54
- """Process the schema to handle nullable types by removing anyOf with null and keeping the base type."""
55
- if isinstance(schema, dict):
56
- if "anyOf" in schema and len(schema["anyOf"]) == 2:
57
- types = [t.get("type") for t in schema["anyOf"]]
58
- if "null" in types:
59
- non_null_type = next(
60
- t for t in schema["anyOf"] if t.get("type") != "null"
61
- )
62
- return non_null_type
63
-
64
- return {k: process_nullable_types(v) for k, v in schema.items()}
65
- elif isinstance(schema, list):
66
- return [process_nullable_types(item) for item in schema]
67
- return schema
68
-
69
-
70
- def generate_schema_from_graph(
71
- graph: CompiledStateGraph[Any, Any, Any],
72
- ) -> Dict[str, Any]:
73
- """Extract input/output schema from a LangGraph graph"""
74
- schema = {
75
- "input": {"type": "object", "properties": {}, "required": []},
76
- "output": {"type": "object", "properties": {}, "required": []},
77
- }
78
-
79
- if hasattr(graph, "input_schema"):
80
- if hasattr(graph.input_schema, "model_json_schema"):
81
- input_schema = graph.input_schema.model_json_schema()
82
- unpacked_ref_def_properties = resolve_refs(input_schema)
83
-
84
- # Process the schema to handle nullable types
85
- processed_properties = process_nullable_types(
86
- unpacked_ref_def_properties.get("properties", {})
87
- )
88
-
89
- schema["input"]["properties"] = processed_properties
90
- schema["input"]["required"] = unpacked_ref_def_properties.get(
91
- "required", []
92
- )
93
-
94
- if hasattr(graph, "output_schema"):
95
- if hasattr(graph.output_schema, "model_json_schema"):
96
- output_schema = graph.output_schema.model_json_schema()
97
- unpacked_ref_def_properties = resolve_refs(output_schema)
98
-
99
- # Process the schema to handle nullable types
100
- processed_properties = process_nullable_types(
101
- unpacked_ref_def_properties.get("properties", {})
102
- )
103
-
104
- schema["output"]["properties"] = processed_properties
105
- schema["output"]["required"] = unpacked_ref_def_properties.get(
106
- "required", []
107
- )
108
-
109
- return schema
110
-
111
-
112
32
  def generate_agent_md_file(
113
33
  target_directory: str,
114
34
  file_name: str,
@@ -0,0 +1,21 @@
1
+ """Runtime factory for LangGraph projects."""
2
+
3
+ from uipath._cli._runtime._contracts import UiPathRuntimeFactory
4
+
5
+ from ._cli._runtime._context import LangGraphRuntimeContext
6
+ from ._cli._runtime._runtime import LangGraphScriptRuntime
7
+
8
+
9
+ class LangGraphRuntimeFactory(
10
+ UiPathRuntimeFactory[LangGraphScriptRuntime, LangGraphRuntimeContext]
11
+ ):
12
+ """Factory for LangGraph runtimes."""
13
+
14
+ def __init__(self):
15
+ super().__init__(
16
+ LangGraphScriptRuntime,
17
+ LangGraphRuntimeContext,
18
+ context_generator=lambda **kwargs: LangGraphRuntimeContext.with_defaults(
19
+ **kwargs
20
+ ),
21
+ )
@@ -1,5 +1,5 @@
1
1
  version = 1
2
- revision = 3
2
+ revision = 2
3
3
  requires-python = ">=3.10"
4
4
  resolution-markers = [
5
5
  "python_full_version >= '3.13'",
@@ -3308,7 +3308,7 @@ wheels = [
3308
3308
 
3309
3309
  [[package]]
3310
3310
  name = "uipath"
3311
- version = "2.1.108"
3311
+ version = "2.1.110"
3312
3312
  source = { registry = "https://pypi.org/simple" }
3313
3313
  dependencies = [
3314
3314
  { name = "azure-monitor-opentelemetry" },
@@ -3330,14 +3330,14 @@ dependencies = [
3330
3330
  { name = "tomli" },
3331
3331
  { name = "truststore" },
3332
3332
  ]
3333
- sdist = { url = "https://files.pythonhosted.org/packages/d7/7a/b453ccd146c2aaaad87ff4cd71e59fdeec08ad380ade08cc4b980fa46602/uipath-2.1.108.tar.gz", hash = "sha256:f0a89c6ad4394dacae3d448488b6f6e03129afa3097cb2f2f8193599987afc3f", size = 2241996, upload-time = "2025-10-24T16:07:35.416Z" }
3333
+ sdist = { url = "https://files.pythonhosted.org/packages/21/b6/56322c6f762d35116bf5e9c2ab5b3b7d335291781f519bbb635e9739b7e8/uipath-2.1.110.tar.gz", hash = "sha256:758032323a79ce32ba14c7d7ad6fcd031e92057a24865e2154183c6c5147dd2f", size = 2298308, upload-time = "2025-10-24T18:47:47.996Z" }
3334
3334
  wheels = [
3335
- { url = "https://files.pythonhosted.org/packages/dc/84/49efdb83e21795d9eabea2dcce80f33868597cc31f317ec13f389e410dd0/uipath-2.1.108-py3-none-any.whl", hash = "sha256:031ba5bfe1f9785e8b3a1ea792acad9ac92585b7e51051c11c5e7abe4a03ba25", size = 298633, upload-time = "2025-10-24T16:07:33.429Z" },
3335
+ { url = "https://files.pythonhosted.org/packages/ee/44/e336ea0e8e977808f13acd3701fc0d8311410559815f9dda12fa773a41f3/uipath-2.1.110-py3-none-any.whl", hash = "sha256:130242c7eb99c0b20aba905bdddfa1f94f1fe8c5e5406201fa6b78ed37e30100", size = 352803, upload-time = "2025-10-24T18:47:46.03Z" },
3336
3336
  ]
3337
3337
 
3338
3338
  [[package]]
3339
3339
  name = "uipath-langchain"
3340
- version = "0.0.144"
3340
+ version = "0.0.145"
3341
3341
  source = { editable = "." }
3342
3342
  dependencies = [
3343
3343
  { name = "httpx" },
@@ -3383,7 +3383,7 @@ requires-dist = [
3383
3383
  { name = "openinference-instrumentation-langchain", specifier = ">=0.1.50" },
3384
3384
  { name = "pydantic-settings", specifier = ">=2.6.0" },
3385
3385
  { name = "python-dotenv", specifier = ">=1.0.1" },
3386
- { name = "uipath", specifier = ">=2.1.103,<2.2.0" },
3386
+ { name = "uipath", specifier = ">=2.1.110,<2.2.0" },
3387
3387
  { name = "uipath-langchain", marker = "extra == 'langchain'", specifier = ">=0.0.2" },
3388
3388
  ]
3389
3389
  provides-extras = ["langchain"]