uipath-langchain 0.0.145__py3-none-any.whl → 0.0.147__py3-none-any.whl

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.

@@ -490,14 +490,14 @@ class LangGraphScriptRuntime(LangGraphRuntime):
490
490
  """Get entrypoint for this LangGraph runtime."""
491
491
  graph = await self.resolver()
492
492
  compiled_graph = graph.compile()
493
- schema = generate_schema_from_graph(compiled_graph)
493
+ schema_details = generate_schema_from_graph(compiled_graph)
494
494
 
495
495
  return Entrypoint(
496
496
  file_path=self.context.entrypoint, # type: ignore[call-arg]
497
497
  unique_id=str(uuid4()),
498
498
  type="agent",
499
- input=schema["input"],
500
- output=schema["output"],
499
+ input=schema_details.schema["input"],
500
+ output=schema_details.schema["output"],
501
501
  )
502
502
 
503
503
  async def cleanup(self) -> None:
@@ -1,27 +1,73 @@
1
+ from dataclasses import dataclass
1
2
  from typing import Any, Dict
2
3
 
3
4
  from langgraph.graph.state import CompiledStateGraph
4
5
 
5
6
 
6
- def resolve_refs(schema, root=None):
7
- """Recursively resolves $ref references in a JSON schema."""
7
+ @dataclass
8
+ class SchemaDetails:
9
+ schema: dict[str, Any]
10
+ has_input_circular_dependency: bool
11
+ has_output_circular_dependency: bool
12
+
13
+
14
+ def resolve_refs(schema, root=None, visited=None):
15
+ """Recursively resolves $ref references in a JSON schema, handling circular references.
16
+
17
+ Returns:
18
+ tuple: (resolved_schema, has_circular_dependency)
19
+ """
8
20
  if root is None:
9
- root = schema # Store the root schema to resolve $refs
21
+ root = schema
22
+
23
+ if visited is None:
24
+ visited = set()
25
+
26
+ has_circular = False
10
27
 
11
28
  if isinstance(schema, dict):
12
29
  if "$ref" in schema:
13
- ref_path = schema["$ref"].lstrip("#/").split("/")
30
+ ref_path = schema["$ref"]
31
+
32
+ if ref_path in visited:
33
+ # Circular dependency detected
34
+ return {
35
+ "type": "object",
36
+ "description": f"Circular reference to {ref_path}",
37
+ }, True
38
+
39
+ visited.add(ref_path)
40
+
41
+ # Resolve the reference
42
+ ref_parts = ref_path.lstrip("#/").split("/")
14
43
  ref_schema = root
15
- for part in ref_path:
44
+ for part in ref_parts:
16
45
  ref_schema = ref_schema.get(part, {})
17
- return resolve_refs(ref_schema, root)
18
46
 
19
- return {k: resolve_refs(v, root) for k, v in schema.items()}
47
+ result, circular = resolve_refs(ref_schema, root, visited)
48
+ has_circular = has_circular or circular
49
+
50
+ # Remove from visited after resolution (allows the same ref in different branches)
51
+ visited.discard(ref_path)
52
+
53
+ return result, has_circular
54
+
55
+ resolved_dict = {}
56
+ for k, v in schema.items():
57
+ resolved_value, circular = resolve_refs(v, root, visited)
58
+ resolved_dict[k] = resolved_value
59
+ has_circular = has_circular or circular
60
+ return resolved_dict, has_circular
20
61
 
21
62
  elif isinstance(schema, list):
22
- return [resolve_refs(item, root) for item in schema]
63
+ resolved_list = []
64
+ for item in schema:
65
+ resolved_item, circular = resolve_refs(item, root, visited)
66
+ resolved_list.append(resolved_item)
67
+ has_circular = has_circular or circular
68
+ return resolved_list, has_circular
23
69
 
24
- return schema
70
+ return schema, False
25
71
 
26
72
 
27
73
  def process_nullable_types(
@@ -45,8 +91,10 @@ def process_nullable_types(
45
91
 
46
92
  def generate_schema_from_graph(
47
93
  graph: CompiledStateGraph[Any, Any, Any],
48
- ) -> Dict[str, Any]:
94
+ ) -> SchemaDetails:
49
95
  """Extract input/output schema from a LangGraph graph"""
96
+ input_circular_dependency = False
97
+ output_circular_dependency = False
50
98
  schema = {
51
99
  "input": {"type": "object", "properties": {}, "required": []},
52
100
  "output": {"type": "object", "properties": {}, "required": []},
@@ -55,7 +103,9 @@ def generate_schema_from_graph(
55
103
  if hasattr(graph, "input_schema"):
56
104
  if hasattr(graph.input_schema, "model_json_schema"):
57
105
  input_schema = graph.input_schema.model_json_schema()
58
- unpacked_ref_def_properties = resolve_refs(input_schema)
106
+ unpacked_ref_def_properties, input_circular_dependency = resolve_refs(
107
+ input_schema
108
+ )
59
109
 
60
110
  # Process the schema to handle nullable types
61
111
  processed_properties = process_nullable_types(
@@ -70,7 +120,9 @@ def generate_schema_from_graph(
70
120
  if hasattr(graph, "output_schema"):
71
121
  if hasattr(graph.output_schema, "model_json_schema"):
72
122
  output_schema = graph.output_schema.model_json_schema()
73
- unpacked_ref_def_properties = resolve_refs(output_schema)
123
+ unpacked_ref_def_properties, output_circular_dependency = resolve_refs(
124
+ output_schema
125
+ )
74
126
 
75
127
  # Process the schema to handle nullable types
76
128
  processed_properties = process_nullable_types(
@@ -82,4 +134,4 @@ def generate_schema_from_graph(
82
134
  "required", []
83
135
  )
84
136
 
85
- return schema
137
+ return SchemaDetails(schema, input_circular_dependency, output_circular_dependency)
@@ -175,7 +175,7 @@ async def langgraph_init_middleware_async(
175
175
  else loaded_graph
176
176
  )
177
177
  compiled_graph = state_graph.compile()
178
- graph_schema = generate_schema_from_graph(compiled_graph)
178
+ schema_details = generate_schema_from_graph(compiled_graph)
179
179
 
180
180
  mermaids[graph.name] = compiled_graph.get_graph(xray=1).draw_mermaid()
181
181
 
@@ -197,11 +197,17 @@ async def langgraph_init_middleware_async(
197
197
  "filePath": graph.name,
198
198
  "uniqueId": str(uuid.uuid4()),
199
199
  "type": "agent",
200
- "input": graph_schema["input"],
201
- "output": graph_schema["output"],
200
+ "input": schema_details.schema["input"],
201
+ "output": schema_details.schema["output"],
202
202
  }
203
203
  entrypoints.append(new_entrypoint)
204
204
 
205
+ warning_circular_deps = f" schema of graph '{graph.name}' contains circular dependencies. Some types might not be correctly inferred."
206
+ if schema_details.has_input_circular_dependency:
207
+ console.warning("Input" + warning_circular_deps)
208
+ if schema_details.has_output_circular_dependency:
209
+ console.warning("Output" + warning_circular_deps)
210
+
205
211
  except Exception as e:
206
212
  console.error(f"Error during graph load: {e}")
207
213
  return MiddlewareResult(
@@ -243,6 +249,7 @@ async def langgraph_init_middleware_async(
243
249
  should_continue=False,
244
250
  should_include_stacktrace=True,
245
251
  )
252
+
246
253
  console.success(f"Created {click.style(config_path, fg='cyan')} file.")
247
254
 
248
255
  generate_agents_md_files(options)
@@ -1,12 +1,13 @@
1
1
  """UiPath ReAct Agent implementation"""
2
2
 
3
3
  from .agent import create_agent
4
- from .state import AgentGraphNode, AgentGraphState
4
+ from .types import AgentGraphConfig, AgentGraphNode, AgentGraphState
5
5
  from .utils import resolve_output_model
6
6
 
7
7
  __all__ = [
8
8
  "create_agent",
9
- "AgentGraphState",
10
- "AgentGraphNode",
11
9
  "resolve_output_model",
10
+ "AgentGraphNode",
11
+ "AgentGraphState",
12
+ "AgentGraphConfig",
12
13
  ]
@@ -18,11 +18,11 @@ from .llm_node import (
18
18
  from .router import (
19
19
  route_agent,
20
20
  )
21
- from .state import AgentGraphNode, AgentGraphState
22
21
  from .terminate_node import (
23
22
  create_terminate_node,
24
23
  )
25
24
  from .tools import create_flow_control_tools
25
+ from .types import AgentGraphConfig, AgentGraphNode, AgentGraphState
26
26
 
27
27
 
28
28
  def create_agent(
@@ -32,13 +32,16 @@ def create_agent(
32
32
  *,
33
33
  state_schema: Type[AgentGraphState] = AgentGraphState,
34
34
  response_format: type[BaseModel] | None = None,
35
- recursion_limit: int = 50,
35
+ config: AgentGraphConfig | None = None,
36
36
  ) -> StateGraph[AgentGraphState]:
37
37
  """Build agent graph with INIT -> AGENT <-> TOOLS loop, terminated by control flow tools.
38
38
 
39
39
  Control flow tools (end_execution, raise_error) are auto-injected alongside regular tools.
40
40
  """
41
- os.environ["LANGCHAIN_RECURSION_LIMIT"] = str(recursion_limit)
41
+ if config is None:
42
+ config = AgentGraphConfig()
43
+
44
+ os.environ["LANGCHAIN_RECURSION_LIMIT"] = str(config.recursion_limit)
42
45
 
43
46
  agent_tools = list(tools)
44
47
  flow_control_tools: list[BaseTool] = create_flow_control_tools(response_format)
@@ -4,7 +4,7 @@ from typing import Sequence
4
4
 
5
5
  from langchain_core.messages import HumanMessage, SystemMessage
6
6
 
7
- from .state import AgentGraphState
7
+ from .types import AgentGraphState
8
8
 
9
9
 
10
10
  def create_init_node(
@@ -7,7 +7,7 @@ from langchain_core.messages import AIMessage, AnyMessage
7
7
  from langchain_core.tools import BaseTool
8
8
 
9
9
  from .constants import MAX_SUCCESSIVE_COMPLETIONS
10
- from .state import AgentGraphState
10
+ from .types import AgentGraphState
11
11
  from .utils import count_successive_completions
12
12
 
13
13
 
@@ -7,7 +7,7 @@ from uipath.agent.react import END_EXECUTION_TOOL, RAISE_ERROR_TOOL
7
7
 
8
8
  from .constants import MAX_SUCCESSIVE_COMPLETIONS
9
9
  from .exceptions import AgentNodeRoutingException
10
- from .state import AgentGraphNode, AgentGraphState
10
+ from .types import AgentGraphNode, AgentGraphState
11
11
  from .utils import count_successive_completions
12
12
 
13
13
  FLOW_CONTROL_TOOLS = [END_EXECUTION_TOOL.name, RAISE_ERROR_TOOL.name]
@@ -11,7 +11,7 @@ from .exceptions import (
11
11
  AgentNodeRoutingException,
12
12
  AgentTerminationException,
13
13
  )
14
- from .state import AgentGraphState
14
+ from .types import AgentGraphState
15
15
 
16
16
 
17
17
  def create_terminate_node(
@@ -3,6 +3,7 @@ from __future__ import annotations
3
3
  from enum import StrEnum
4
4
 
5
5
  from langgraph.graph import MessagesState
6
+ from pydantic import BaseModel, Field
6
7
 
7
8
 
8
9
  class AgentGraphState(MessagesState):
@@ -16,3 +17,9 @@ class AgentGraphNode(StrEnum):
16
17
  AGENT = "agent"
17
18
  TOOLS = "tools"
18
19
  TERMINATE = "terminate"
20
+
21
+
22
+ class AgentGraphConfig(BaseModel):
23
+ recursion_limit: int = Field(
24
+ default=50, ge=1, description="Maximum recursion limit for the agent graph"
25
+ )
@@ -2,23 +2,17 @@
2
2
  Vector store implementation that connects to UiPath Context Grounding as a backend.
3
3
 
4
4
  This is a read-only vector store that uses the UiPath Context Grounding API to retrieve documents.
5
-
6
- You need to set the following environment variables (also see .env.example):
7
- ### - UIPATH_URL="https://alpha.uipath.com/{ORG_ID}/{TENANT_ID}"
8
- ### - UIPATH_ACCESS_TOKEN={BEARER_TOKEN_WITH_CONTEXT_GROUNDING_PERMISSIONS}
9
- ### - UIPATH_FOLDER_PATH="" - this can be left empty
10
- ### - UIPATH_FOLDER_KEY="" - this can be left empty
11
5
  """
12
6
 
13
7
  from collections.abc import Iterable
14
- from typing import Any, Optional, TypeVar
8
+ from typing import Any, Self
15
9
 
16
10
  from langchain_core.documents import Document
17
11
  from langchain_core.embeddings import Embeddings
18
12
  from langchain_core.vectorstores import VectorStore
13
+ from typing_extensions import override
19
14
  from uipath import UiPath
20
-
21
- VST = TypeVar("VST", bound="ContextGroundingVectorStore")
15
+ from uipath.models.context_grounding import ContextGroundingQueryResponse
22
16
 
23
17
 
24
18
  class ContextGroundingVectorStore(VectorStore):
@@ -26,42 +20,32 @@ class ContextGroundingVectorStore(VectorStore):
26
20
 
27
21
  This class provides a straightforward implementation that connects to the
28
22
  UiPath Context Grounding API for semantic searching.
29
-
30
- Example:
31
- .. code-block:: python
32
-
33
- from uipath_agents_gym.tools.ecs_vectorstore import ContextGroundingVectorStore
34
-
35
- # Initialize the vector store with an index name
36
- vectorstore = ContextGroundingVectorStore(index_name="ECCN")
37
-
38
- # Perform similarity search
39
- docs_with_scores = vectorstore.similarity_search_with_score(
40
- "How do I process an invoice?", k=5
41
- )
42
23
  """
43
24
 
44
25
  def __init__(
45
26
  self,
46
27
  index_name: str,
47
- folder_path: Optional[str] = None,
48
- uipath_sdk: Optional[UiPath] = None,
28
+ uipath_sdk: UiPath | None = None,
29
+ folder_path: str | None = None,
49
30
  ):
50
31
  """Initialize the ContextGroundingVectorStore.
51
32
 
52
33
  Args:
53
- index_name: Name of the context grounding index to use
54
- uipath_sdk: Optional SDK instance to use. If not provided, a new instance will be created.
34
+ index_name: Name of the context grounding index to use (schema name)
35
+ uipath_sdk: Optional UiPath SDK instance.
36
+ folder_path: Optional folder path for folder-scoped operations
55
37
  """
56
38
  self.index_name = index_name
57
39
  self.folder_path = folder_path
58
40
  self.sdk = uipath_sdk or UiPath()
59
41
 
42
+ # VectorStore implementation methods
43
+
44
+ @override
60
45
  def similarity_search_with_score(
61
46
  self, query: str, k: int = 4, **kwargs: Any
62
47
  ) -> list[tuple[Document, float]]:
63
48
  """Return documents most similar to the query along with the distances.
64
- The distance is 1 - score, where score is the relevance score returned by the Context Grounding API.
65
49
 
66
50
  Args:
67
51
  query: The query string
@@ -70,52 +54,24 @@ class ContextGroundingVectorStore(VectorStore):
70
54
  Returns:
71
55
  list of tuples of (document, score)
72
56
  """
73
- # Call the UiPath SDK to perform the search
74
- results = self.sdk.context_grounding.search(
75
- name=self.index_name,
76
- query=query,
77
- number_of_results=k,
78
- folder_path=self.folder_path,
79
- )
80
-
81
- # Convert the results to Documents with scores
82
- docs_with_scores = []
83
- for result in results:
84
- # Create metadata from result fields
85
- metadata = {
86
- "source": result.source,
87
- "id": result.id,
88
- "reference": result.reference,
89
- "page_number": result.page_number,
90
- "source_document_id": result.source_document_id,
91
- "caption": result.caption,
92
- }
93
-
94
- # Add any operation metadata if available
95
- if result.metadata:
96
- metadata["operation_id"] = result.metadata.operation_id
97
- metadata["strategy"] = result.metadata.strategy
98
-
99
- # Create a Document with the content and metadata
100
- doc = Document(
101
- page_content=result.content,
102
- metadata=metadata,
57
+ # Use the context grounding service to perform search
58
+ results: list[ContextGroundingQueryResponse] = (
59
+ self.sdk.context_grounding.search(
60
+ name=self.index_name,
61
+ query=query,
62
+ number_of_results=k,
63
+ folder_path=self.folder_path,
103
64
  )
65
+ )
104
66
 
105
- score = 1.0 - float(result.score)
106
-
107
- docs_with_scores.append((doc, score))
108
-
109
- return docs_with_scores
67
+ return self._convert_results_to_documents(results)
110
68
 
69
+ @override
111
70
  def similarity_search_with_relevance_scores(
112
71
  self, query: str, k: int = 4, **kwargs: Any
113
72
  ) -> list[tuple[Document, float]]:
114
73
  """Return documents along with their relevance scores on a scale from 0 to 1.
115
74
 
116
- This directly uses the scores provided by the Context Grounding API,
117
- which are already normalized between 0 and 1.
118
-
119
75
  Args:
120
76
  query: The query string
121
77
  k: Number of documents to return (default=4)
@@ -128,6 +84,7 @@ class ContextGroundingVectorStore(VectorStore):
128
84
  for doc, score in self.similarity_search_with_score(query, k, **kwargs)
129
85
  ]
130
86
 
87
+ @override
131
88
  async def asimilarity_search_with_score(
132
89
  self, query: str, k: int = 4, **kwargs: Any
133
90
  ) -> list[tuple[Document, float]]:
@@ -140,52 +97,23 @@ class ContextGroundingVectorStore(VectorStore):
140
97
  Returns:
141
98
  list of tuples of (document, score)
142
99
  """
143
- # Call the UiPath SDK to perform the search asynchronously
144
- results = await self.sdk.context_grounding.search_async(
100
+ # Use the context grounding service to perform async search
101
+ results: list[
102
+ ContextGroundingQueryResponse
103
+ ] = await self.sdk.context_grounding.search_async(
145
104
  name=self.index_name,
146
105
  query=query,
147
106
  number_of_results=k,
148
107
  folder_path=self.folder_path,
149
108
  )
150
109
 
151
- # Convert the results to Documents with scores
152
- docs_with_scores = []
153
- for result in results:
154
- # Create metadata from result fields
155
- metadata = {
156
- "source": result.source,
157
- "id": result.id,
158
- "reference": result.reference,
159
- "page_number": result.page_number,
160
- "source_document_id": result.source_document_id,
161
- "caption": result.caption,
162
- }
163
-
164
- # Add any operation metadata if available
165
- if result.metadata:
166
- metadata["operation_id"] = result.metadata.operation_id
167
- metadata["strategy"] = result.metadata.strategy
168
-
169
- # Create a Document with the content and metadata
170
- doc = Document(
171
- page_content=result.content,
172
- metadata=metadata,
173
- )
174
-
175
- # Get the distance score as 1 - ecs_score
176
- score = 1.0 - float(result.score)
177
-
178
- docs_with_scores.append((doc, score))
179
-
180
- return docs_with_scores
110
+ return self._convert_results_to_documents(results)
181
111
 
112
+ @override
182
113
  async def asimilarity_search_with_relevance_scores(
183
114
  self, query: str, k: int = 4, **kwargs: Any
184
115
  ) -> list[tuple[Document, float]]:
185
- """Asynchronously return documents along with their relevance scores on a scale from 0 to 1.
186
-
187
- This directly uses the scores provided by the Context Grounding API,
188
- which are already normalized between 0 and 1.
116
+ """Asynchronously return documents along with their relevance scores.
189
117
 
190
118
  Args:
191
119
  query: The query string
@@ -201,6 +129,7 @@ class ContextGroundingVectorStore(VectorStore):
201
129
  )
202
130
  ]
203
131
 
132
+ @override
204
133
  def similarity_search(
205
134
  self, query: str, k: int = 4, **kwargs: Any
206
135
  ) -> list[Document]:
@@ -216,6 +145,7 @@ class ContextGroundingVectorStore(VectorStore):
216
145
  docs_and_scores = self.similarity_search_with_score(query, k, **kwargs)
217
146
  return [doc for doc, _ in docs_and_scores]
218
147
 
148
+ @override
219
149
  async def asimilarity_search(
220
150
  self, query: str, k: int = 4, **kwargs: Any
221
151
  ) -> list[Document]:
@@ -231,14 +161,64 @@ class ContextGroundingVectorStore(VectorStore):
231
161
  docs_and_scores = await self.asimilarity_search_with_score(query, k, **kwargs)
232
162
  return [doc for doc, _ in docs_and_scores]
233
163
 
164
+ def _convert_results_to_documents(
165
+ self, results: list[ContextGroundingQueryResponse]
166
+ ) -> list[tuple[Document, float]]:
167
+ """Convert API results to Document objects with scores.
168
+
169
+ Args:
170
+ results: List of ContextGroundingQueryResponse objects
171
+
172
+ Returns:
173
+ List of tuples containing (Document, score)
174
+ """
175
+ docs_with_scores = []
176
+
177
+ for result in results:
178
+ # Create metadata from result fields
179
+ metadata = {}
180
+
181
+ # Add string fields with proper defaults
182
+ if result.source:
183
+ metadata["source"] = str(result.source)
184
+ if result.reference:
185
+ metadata["reference"] = str(result.reference)
186
+ if result.page_number:
187
+ metadata["page_number"] = str(result.page_number)
188
+ if result.source_document_id:
189
+ metadata["source_document_id"] = str(result.source_document_id)
190
+ if result.caption:
191
+ metadata["caption"] = str(result.caption)
192
+
193
+ # Add any operation metadata if available
194
+ if result.metadata:
195
+ if result.metadata.operation_id:
196
+ metadata["operation_id"] = str(result.metadata.operation_id)
197
+ if result.metadata.strategy:
198
+ metadata["strategy"] = str(result.metadata.strategy)
199
+
200
+ # Create a Document with the content and metadata
201
+ doc = Document(
202
+ page_content=result.content or "",
203
+ metadata=metadata,
204
+ )
205
+
206
+ # Convert score to distance (1 - score)
207
+ score = 1.0 - float(result.score or 0.0)
208
+
209
+ docs_with_scores.append((doc, score))
210
+
211
+ return docs_with_scores
212
+
234
213
  @classmethod
214
+ @override
235
215
  def from_texts(
236
- cls: type[VST],
216
+ cls,
237
217
  texts: list[str],
238
218
  embedding: Embeddings,
239
- metadatas: Optional[list[dict[str, Any]]] = None,
219
+ metadatas: list[dict[str, Any]] | None = None,
240
220
  **kwargs: Any,
241
- ) -> VST:
221
+ ) -> Self:
242
222
  """This method is required by the VectorStore abstract class, but is not supported
243
223
  by ContextGroundingVectorStore which is read-only.
244
224
 
@@ -246,15 +226,14 @@ class ContextGroundingVectorStore(VectorStore):
246
226
  NotImplementedError: This method is not supported by ContextGroundingVectorStore
247
227
  """
248
228
  raise NotImplementedError(
249
- "ContextGroundingVectorStore is a read-only wrapper for UiPath Context Grounding. "
250
- "Creating a vector store from texts is not supported."
229
+ "ContextGroundingVectorStore is a read-only wrapper for UiPath Context Grounding."
251
230
  )
252
231
 
253
- # Other required methods with minimal implementation to satisfy the interface
232
+ @override
254
233
  def add_texts(
255
234
  self,
256
235
  texts: Iterable[str],
257
- metadatas: Optional[list[dict[str, Any]]] = None,
236
+ metadatas: list[dict[str, Any]] | None = None,
258
237
  **kwargs: Any,
259
238
  ) -> list[str]:
260
239
  """Not implemented for ContextGroundingVectorStore as this is a read-only wrapper."""
@@ -262,7 +241,8 @@ class ContextGroundingVectorStore(VectorStore):
262
241
  "ContextGroundingVectorStore is a read-only wrapper for UiPath Context Grounding."
263
242
  )
264
243
 
265
- def delete(self, ids: Optional[list[str]] = None, **kwargs: Any) -> Optional[bool]:
244
+ @override
245
+ def delete(self, ids: list[str] | None = None, **kwargs: Any) -> bool | None:
266
246
  """Not implemented for ContextGroundingVectorStore as this is a read-only wrapper."""
267
247
  raise NotImplementedError(
268
248
  "ContextGroundingVectorStore is a read-only wrapper for UiPath Context Grounding."
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: uipath-langchain
3
- Version: 0.0.145
3
+ Version: 0.0.147
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
@@ -6,7 +6,7 @@ uipath_langchain/_cli/__init__.py,sha256=juqd9PbXs4yg45zMJ7BHAOPQjb7sgEbWE9InBtG
6
6
  uipath_langchain/_cli/cli_debug.py,sha256=zaB-W3_29FsCqF-YZ3EsayyxC957tg4tOjdcdX8ew-M,3311
7
7
  uipath_langchain/_cli/cli_dev.py,sha256=l3XFHrh-0OUFJq3zLMKuzedJAluGQBIZQTHP1KWOmpw,1725
8
8
  uipath_langchain/_cli/cli_eval.py,sha256=Z1EYFObD0n-lfXfvjq4ejnrWQJrRrNktSxNPDE7QqSc,3529
9
- uipath_langchain/_cli/cli_init.py,sha256=UAWDTHS-BCTYP5kOZh_GkN6gL19y-4UPBlCdcj_Izcg,9702
9
+ uipath_langchain/_cli/cli_init.py,sha256=RtX3NMLgHj2gKNRKv2HW7iBI5gMrl7ZpkG6uV_f_arg,10145
10
10
  uipath_langchain/_cli/cli_new.py,sha256=KKLxCzz7cDQ__rRr_a496IHWlSQXhmrBNgmKHnXAnTY,2336
11
11
  uipath_langchain/_cli/cli_run.py,sha256=DIsAKsbQ8gTRz44q9ZV3jBjrbM8bhS6lEQ3dd4joDFU,3712
12
12
  uipath_langchain/_cli/_runtime/_context.py,sha256=mjmGEogKiO8tUV878BgV9rFIeA9MCmEH6hgs5W_dm4g,328
@@ -15,11 +15,11 @@ uipath_langchain/_cli/_runtime/_exception.py,sha256=xHKeu8njByiMcObbggyZk0cXYXX5
15
15
  uipath_langchain/_cli/_runtime/_graph_resolver.py,sha256=c-JrsX7rx_CflDPfKhz9q-PgBrgI2IOBcYwiffwddh8,5457
16
16
  uipath_langchain/_cli/_runtime/_input.py,sha256=HAJUxjNmOg9q7l_ebF1AzIKL5_ysXyjk1bWXHsjhEPI,5761
17
17
  uipath_langchain/_cli/_runtime/_output.py,sha256=2VvdW4olv7Vd0c4grtTQazXxfBbcuocgSSP6V2P8uHE,4887
18
- uipath_langchain/_cli/_runtime/_runtime.py,sha256=S8iGdSmBeMkM2m5QflBnuuVUi1L1hM0xE4UG1F872_I,19229
18
+ uipath_langchain/_cli/_runtime/_runtime.py,sha256=Cur3WdbIkDs60peF57QzaKl2YHP8-WBfpLXhTVLU_3c,19267
19
19
  uipath_langchain/_cli/_templates/langgraph.json.template,sha256=eeh391Gta_hoRgaNaZ58nW1LNvCVXA7hlAH6l7Veous,107
20
20
  uipath_langchain/_cli/_templates/main.py.template,sha256=GpSblGH2hwS9ibqQmX2iB2nsmOA5zDfEEF4ChLiMxbQ,875
21
21
  uipath_langchain/_cli/_utils/_graph.py,sha256=nMJWy8FmaD9rqPUY2lHc5uVpUzbXD1RO12uJnhe0kdo,6803
22
- uipath_langchain/_cli/_utils/_schema.py,sha256=mO8Ic5mZr8jEqlNsStnXcmgKKvjChJxNTBO9vrMDOeE,3106
22
+ uipath_langchain/_cli/_utils/_schema.py,sha256=y0w0fADLxeOO-AipkhLJ7AX7azY6vmEIyBDzwaxUAPk,4716
23
23
  uipath_langchain/_resources/AGENTS.md,sha256=5VmIfaQ6H91VxInnxFmJklURXeWIIQpGQTYBEmvvoVA,1060
24
24
  uipath_langchain/_resources/REQUIRED_STRUCTURE.md,sha256=BRmWWFtM0qNXj5uumALVxq9h6pifJDGh5NzuyctuH1Q,2569
25
25
  uipath_langchain/_tracing/__init__.py,sha256=C2dRvQ2ynxCmyICgE-rJHimWKEcFRME_o9gfX84Mb3Y,123
@@ -29,15 +29,15 @@ uipath_langchain/_utils/__init__.py,sha256=-w-4TD9ZnJDCpj4VIPXhJciukrmDJJbmnOFnh
29
29
  uipath_langchain/_utils/_request_mixin.py,sha256=_drxHTRpfyVn3g3ppKgn466EBaUWH83qyeGKLY41CGY,20142
30
30
  uipath_langchain/_utils/_settings.py,sha256=2fExMQJ88YptfldmzMfZIpsx-m1gfMkeYGf5t6KIe0A,3084
31
31
  uipath_langchain/_utils/_sleep_policy.py,sha256=e9pHdjmcCj4CVoFM1jMyZFelH11YatsgWfpyrfXzKBQ,1251
32
- uipath_langchain/agent/react/__init__.py,sha256=rfVB6PQWUhPHff3J1BnPMBKBMaHfgEkII1gXwjiqUMY,272
33
- uipath_langchain/agent/react/agent.py,sha256=cU9ZiXi7EfV1pMf9nZBO8LhjYUmRsncyBk9k1pEBRh8,2455
32
+ uipath_langchain/agent/react/__init__.py,sha256=XXplWNiD9XCxMVVyE0RL8tOwJjkP9ZKU6mFR5Em0ONk,314
33
+ uipath_langchain/agent/react/agent.py,sha256=QxgeKa0kQkm7OEsVinjYMk410VHnDUdE9YQgk5Y3kug,2553
34
34
  uipath_langchain/agent/react/constants.py,sha256=B2yqryh242DETslaRYacUPbVdpjvvApjsBira_qhQwk,61
35
35
  uipath_langchain/agent/react/exceptions.py,sha256=b3lDhrIIHFljlLK3zXPznT7fYzfMRjSd8JfF4247tbI,226
36
- uipath_langchain/agent/react/init_node.py,sha256=zfPKgxi_mWsX7nBcK6wpqcDjHx8Q61TSnXFcTPLUd28,389
37
- uipath_langchain/agent/react/llm_node.py,sha256=jkbfzPNn6rNubgncPlPDQRNuk-sJbj08r95JfWxxWL8,1491
38
- uipath_langchain/agent/react/router.py,sha256=Ttq5O1_8t-z7pQ9tGhiaMmd_Da7_TWULLcgOED7gw_A,3626
39
- uipath_langchain/agent/react/state.py,sha256=EnkGXFlmMtJUy7BTZrbYlGBvvAZ70_HwKPW8n6uwjz0,330
40
- uipath_langchain/agent/react/terminate_node.py,sha256=Uuc-0z4qcPjHB_qZlaEaM2mK1ymCuJJludS7LopyCZg,1898
36
+ uipath_langchain/agent/react/init_node.py,sha256=QhJQSqiM_qlQVsdoZDn_HxV4pl3-rO0Lk9pMlHrqZlw,389
37
+ uipath_langchain/agent/react/llm_node.py,sha256=KzawaVkIWMztf9-LXLyUO7ZaXyuxVQbMusu8NpIHzhI,1491
38
+ uipath_langchain/agent/react/router.py,sha256=PKP0-cJ_xP0Q42zN2MZpIHu4WSletSmQkFJe6QooJpY,3626
39
+ uipath_langchain/agent/react/terminate_node.py,sha256=Gz_-R2LxvesocTZ6x6rIfV5FXiycmT1Fv5oXc2LpW5g,1898
40
+ uipath_langchain/agent/react/types.py,sha256=oPUHckNdGT5n7FhAp5hZ7aNkJKX9Yfzvfvi_h2nKSZw,529
41
41
  uipath_langchain/agent/react/utils.py,sha256=0kZoEkGzddtTZSlGQcqbaPHH5MVtZegq0kBI5_vreGA,1060
42
42
  uipath_langchain/agent/react/tools/__init__.py,sha256=LGfG8Dc32ffKdXQyMI2oYzhNnTs1wbzsddXz6eU-0MY,102
43
43
  uipath_langchain/agent/react/tools/tools.py,sha256=vFBGnFrGocX__sotKisMJr2lxRRVqA0-uThzzhPADIw,1443
@@ -56,9 +56,9 @@ uipath_langchain/retrievers/context_grounding_retriever.py,sha256=YLCIwy89LhLnNq
56
56
  uipath_langchain/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
57
  uipath_langchain/tools/preconfigured.py,sha256=SyvrLrM1kezZxVVytgScVO8nBfVYfFGobWjY7erzsYU,7490
58
58
  uipath_langchain/vectorstores/__init__.py,sha256=w8qs1P548ud1aIcVA_QhBgf_jZDrRMK5Lono78yA8cs,114
59
- uipath_langchain/vectorstores/context_grounding_vectorstore.py,sha256=TncIXG-YsUlO0R5ZYzWsM-Dj1SVCZbzmo2LraVxXelc,9559
60
- uipath_langchain-0.0.145.dist-info/METADATA,sha256=MiwJdi5I8Tc2FbpP3Qb2ICVn9Ykf3-BP7Z_LP6K2Bx4,4276
61
- uipath_langchain-0.0.145.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
62
- uipath_langchain-0.0.145.dist-info/entry_points.txt,sha256=FUtzqGOEntlJKMJIXhQUfT7ZTbQmGhke1iCmDWZaQZI,81
63
- uipath_langchain-0.0.145.dist-info/licenses/LICENSE,sha256=JDpt-uotAkHFmxpwxi6gwx6HQ25e-lG4U_Gzcvgp7JY,1063
64
- uipath_langchain-0.0.145.dist-info/RECORD,,
59
+ uipath_langchain/vectorstores/context_grounding_vectorstore.py,sha256=E0iuDBMAOl50Bdhl3YxywR0CngH1I99mkmfMh3byMFY,8396
60
+ uipath_langchain-0.0.147.dist-info/METADATA,sha256=IxSINnczz6chaAcdHlkwSzyLdGRN04PKd0MXY8m2fRg,4276
61
+ uipath_langchain-0.0.147.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
62
+ uipath_langchain-0.0.147.dist-info/entry_points.txt,sha256=FUtzqGOEntlJKMJIXhQUfT7ZTbQmGhke1iCmDWZaQZI,81
63
+ uipath_langchain-0.0.147.dist-info/licenses/LICENSE,sha256=JDpt-uotAkHFmxpwxi6gwx6HQ25e-lG4U_Gzcvgp7JY,1063
64
+ uipath_langchain-0.0.147.dist-info/RECORD,,