vellum-ai 0.14.4__py3-none-any.whl → 0.14.6__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.
Files changed (39) hide show
  1. vellum/__init__.py +6 -0
  2. vellum/client/__init__.py +8 -8
  3. vellum/client/core/client_wrapper.py +1 -1
  4. vellum/client/resources/__init__.py +2 -0
  5. vellum/client/resources/workflow_sandboxes/__init__.py +3 -0
  6. vellum/client/resources/workflow_sandboxes/client.py +146 -0
  7. vellum/client/resources/workflow_sandboxes/types/__init__.py +5 -0
  8. vellum/client/resources/workflow_sandboxes/types/list_workflow_sandbox_examples_request_tag.py +5 -0
  9. vellum/client/types/__init__.py +4 -0
  10. vellum/client/types/paginated_workflow_sandbox_example_list.py +23 -0
  11. vellum/client/types/workflow_sandbox_example.py +22 -0
  12. vellum/resources/workflow_sandboxes/types/__init__.py +3 -0
  13. vellum/resources/workflow_sandboxes/types/list_workflow_sandbox_examples_request_tag.py +3 -0
  14. vellum/types/paginated_workflow_sandbox_example_list.py +3 -0
  15. vellum/types/workflow_sandbox_example.py +3 -0
  16. vellum/workflows/context.py +8 -3
  17. vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py +81 -1
  18. vellum/workflows/nodes/displayable/code_execution_node/utils.py +44 -20
  19. vellum/workflows/nodes/displayable/prompt_deployment_node/node.py +17 -10
  20. vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py +12 -2
  21. vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/test_node.py +23 -0
  22. vellum/workflows/workflows/base.py +61 -53
  23. vellum/workflows/workflows/tests/test_base_workflow.py +47 -0
  24. vellum/workflows/workflows/tests/test_context.py +60 -0
  25. {vellum_ai-0.14.4.dist-info → vellum_ai-0.14.6.dist-info}/METADATA +1 -1
  26. {vellum_ai-0.14.4.dist-info → vellum_ai-0.14.6.dist-info}/RECORD +39 -29
  27. vellum_ee/workflows/display/nodes/vellum/__init__.py +2 -0
  28. vellum_ee/workflows/display/nodes/vellum/base_adornment_node.py +39 -0
  29. vellum_ee/workflows/display/nodes/vellum/map_node.py +2 -2
  30. vellum_ee/workflows/display/nodes/vellum/retry_node.py +36 -4
  31. vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py +31 -0
  32. vellum_ee/workflows/display/nodes/vellum/try_node.py +43 -29
  33. vellum_ee/workflows/display/nodes/vellum/utils.py +8 -0
  34. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py +25 -1
  35. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py +14 -0
  36. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py +19 -1
  37. {vellum_ai-0.14.4.dist-info → vellum_ai-0.14.6.dist-info}/LICENSE +0 -0
  38. {vellum_ai-0.14.4.dist-info → vellum_ai-0.14.6.dist-info}/WHEEL +0 -0
  39. {vellum_ai-0.14.4.dist-info → vellum_ai-0.14.6.dist-info}/entry_points.txt +0 -0
@@ -1,3 +1,4 @@
1
+ import json
1
2
  from typing import Iterator
2
3
 
3
4
  from vellum.workflows.errors import WorkflowErrorCode
@@ -44,13 +45,19 @@ class PromptDeploymentNode(BasePromptDeploymentNode[StateType]):
44
45
  code=WorkflowErrorCode.INTERNAL_ERROR,
45
46
  )
46
47
 
47
- string_output = next((output for output in outputs if output.type == "STRING"), None)
48
- if not string_output or string_output.value is None:
49
- output_types = {output.type for output in outputs}
50
- is_plural = len(output_types) > 1
51
- raise NodeException(
52
- message=f"Expected to receive a non-null string output from Prompt. Only found outputs of type{'s' if is_plural else ''}: {', '.join(output_types)}", # noqa: E501
53
- code=WorkflowErrorCode.INTERNAL_ERROR,
54
- )
55
-
56
- yield BaseOutput(name="text", value=string_output.value)
48
+ string_outputs = []
49
+ for output in outputs:
50
+ if output.value is None:
51
+ continue
52
+
53
+ if output.type == "STRING":
54
+ string_outputs.append(output.value)
55
+ elif output.type == "JSON":
56
+ string_outputs.append(json.dumps(output.value, indent=4))
57
+ elif output.type == "FUNCTION_CALL":
58
+ string_outputs.append(output.value.model_dump_json(indent=4))
59
+ else:
60
+ string_outputs.append(output.value.message)
61
+
62
+ value = "\n".join(string_outputs)
63
+ yield BaseOutput(name="text", value=value)
@@ -127,10 +127,20 @@ class SubworkflowDeploymentNode(BaseNode[StateType], Generic[StateType]):
127
127
  "execution_context": {"parent_context": parent_context},
128
128
  **request_options.get("additional_body_parameters", {}),
129
129
  }
130
+
131
+ try:
132
+ deployment_id = str(self.deployment) if isinstance(self.deployment, UUID) else None
133
+ deployment_name = self.deployment if isinstance(self.deployment, str) else None
134
+ except AttributeError:
135
+ raise NodeException(
136
+ code=WorkflowErrorCode.NODE_EXECUTION,
137
+ message="Expected subworkflow deployment attribute to be either a UUID or STR, got None instead",
138
+ )
139
+
130
140
  subworkflow_stream = self._context.vellum_client.execute_workflow_stream(
131
141
  inputs=self._compile_subworkflow_inputs(),
132
- workflow_deployment_id=str(self.deployment) if isinstance(self.deployment, UUID) else None,
133
- workflow_deployment_name=self.deployment if isinstance(self.deployment, str) else None,
142
+ workflow_deployment_id=deployment_id,
143
+ workflow_deployment_name=deployment_name,
134
144
  release_tag=self.release_tag,
135
145
  external_id=self.external_id,
136
146
  event_types=["WORKFLOW"],
@@ -11,6 +11,8 @@ from vellum.client.types.workflow_request_chat_history_input_request import Work
11
11
  from vellum.client.types.workflow_request_json_input_request import WorkflowRequestJsonInputRequest
12
12
  from vellum.client.types.workflow_result_event import WorkflowResultEvent
13
13
  from vellum.client.types.workflow_stream_event import WorkflowStreamEvent
14
+ from vellum.workflows.errors import WorkflowErrorCode
15
+ from vellum.workflows.exceptions import NodeException
14
16
  from vellum.workflows.nodes.displayable.subworkflow_deployment_node.node import SubworkflowDeploymentNode
15
17
 
16
18
 
@@ -129,3 +131,24 @@ def test_run_workflow__any_array(vellum_client):
129
131
  assert call_kwargs["inputs"] == [
130
132
  WorkflowRequestJsonInputRequest(name="fruits", value=["apple", "banana", "cherry"]),
131
133
  ]
134
+
135
+
136
+ def test_run_workflow__no_deployment():
137
+ """Confirm that we raise error when running a subworkflow deployment node with no deployment attribute set"""
138
+
139
+ # GIVEN a Subworkflow Deployment Node
140
+ class ExampleSubworkflowDeploymentNode(SubworkflowDeploymentNode):
141
+ subworkflow_inputs = {
142
+ "fruits": ["apple", "banana", "cherry"],
143
+ }
144
+
145
+ # WHEN/THEN running the node should raise a NodeException
146
+ node = ExampleSubworkflowDeploymentNode()
147
+ with pytest.raises(NodeException) as exc_info:
148
+ list(node.run())
149
+
150
+ # AND the error message should be correct
151
+ assert exc_info.value.code == WorkflowErrorCode.NODE_EXECUTION
152
+ assert "Expected subworkflow deployment attribute to be either a UUID or STR, got None instead" in str(
153
+ exc_info.value
154
+ )
@@ -178,82 +178,90 @@ class BaseWorkflow(Generic[InputsType, StateType], metaclass=_BaseWorkflowMeta):
178
178
  def context(self) -> WorkflowContext:
179
179
  return self._context
180
180
 
181
- @classmethod
182
- def get_subgraphs(cls) -> List[Graph]:
183
- original_graph = cls.graph
184
- if isinstance(original_graph, Graph):
185
- return [original_graph]
186
- if isinstance(original_graph, set):
187
- return [
188
- subgraph if isinstance(subgraph, Graph) else Graph.from_node(subgraph) for subgraph in original_graph
189
- ]
190
- if issubclass(original_graph, BaseNode):
191
- return [Graph.from_node(original_graph)]
192
-
193
- raise ValueError(f"Unexpected graph type: {original_graph.__class__}")
194
-
195
- @classmethod
196
- def get_edges(cls) -> Iterator[Edge]:
181
+ @staticmethod
182
+ def _resolve_graph(graph: GraphAttribute) -> List[Graph]:
197
183
  """
198
- Returns an iterator over the edges in the workflow. We use a set to
199
- ensure uniqueness, and the iterator to preserve order.
184
+ Resolves a single graph source to a list of Graph objects.
200
185
  """
186
+ if isinstance(graph, Graph):
187
+ return [graph]
188
+ if isinstance(graph, set):
189
+ graphs = []
190
+ for item in graph:
191
+ if isinstance(item, Graph):
192
+ graphs.append(item)
193
+ elif issubclass(item, BaseNode):
194
+ graphs.append(Graph.from_node(item))
195
+ else:
196
+ raise ValueError(f"Unexpected graph type: {type(item)}")
197
+ return graphs
198
+ if issubclass(graph, BaseNode):
199
+ return [Graph.from_node(graph)]
200
+ raise ValueError(f"Unexpected graph type: {type(graph)}")
201
201
 
202
+ @staticmethod
203
+ def _get_edges_from_subgraphs(subgraphs: Iterable[Graph]) -> Iterator[Edge]:
202
204
  edges = set()
203
- subgraphs = cls.get_subgraphs()
204
205
  for subgraph in subgraphs:
205
206
  for edge in subgraph.edges:
206
207
  if edge not in edges:
207
208
  edges.add(edge)
208
209
  yield edge
209
210
 
211
+ @staticmethod
212
+ def _get_nodes_from_subgraphs(subgraphs: Iterable[Graph]) -> Iterator[Type[BaseNode]]:
213
+ nodes = set()
214
+ for subgraph in subgraphs:
215
+ for node in subgraph.nodes:
216
+ if node not in nodes:
217
+ nodes.add(node)
218
+ yield node
219
+
220
+ @classmethod
221
+ def get_subgraphs(cls) -> List[Graph]:
222
+ return cls._resolve_graph(cls.graph)
223
+
224
+ @classmethod
225
+ def get_edges(cls) -> Iterator[Edge]:
226
+ """
227
+ Returns an iterator over the edges in the workflow. We use a set to
228
+ ensure uniqueness, and the iterator to preserve order.
229
+ """
230
+ return cls._get_edges_from_subgraphs(cls.get_subgraphs())
231
+
210
232
  @classmethod
211
233
  def get_nodes(cls) -> Iterator[Type[BaseNode]]:
212
234
  """
213
235
  Returns an iterator over the nodes in the workflow. We use a set to
214
236
  ensure uniqueness, and the iterator to preserve order.
215
237
  """
238
+ return cls._get_nodes_from_subgraphs(cls.get_subgraphs())
216
239
 
217
- nodes = set()
218
- for subgraph in cls.get_subgraphs():
219
- for node in subgraph.nodes:
220
- if node not in nodes:
221
- nodes.add(node)
222
- yield node
240
+ @classmethod
241
+ def get_unused_subgraphs(cls) -> List[Graph]:
242
+ """
243
+ Returns a list of subgraphs that are defined but not used in the graph
244
+ """
245
+ if not hasattr(cls, "unused_graphs"):
246
+ return []
247
+ graphs = []
248
+ for item in cls.unused_graphs:
249
+ graphs.extend(cls._resolve_graph(item))
250
+ return graphs
223
251
 
224
252
  @classmethod
225
253
  def get_unused_nodes(cls) -> Iterator[Type[BaseNode]]:
226
254
  """
227
255
  Returns an iterator over the nodes that are defined but not used in the graph.
228
256
  """
229
- if not hasattr(cls, "unused_graphs"):
230
- yield from ()
231
- else:
232
- nodes = set()
233
- for item in cls.unused_graphs:
234
- if isinstance(item, Graph):
235
- # Item is a graph
236
- for node in item.nodes:
237
- if node not in nodes:
238
- nodes.add(node)
239
- yield node
240
- elif isinstance(item, set):
241
- # Item is a set of graphs or nodes
242
- for subitem in item:
243
- if isinstance(subitem, Graph):
244
- for node in subitem.nodes:
245
- if node not in nodes:
246
- nodes.add(node)
247
- yield node
248
- elif issubclass(subitem, BaseNode):
249
- if subitem not in nodes:
250
- nodes.add(subitem)
251
- yield subitem
252
- elif issubclass(item, BaseNode):
253
- # Item is a node
254
- if item not in nodes:
255
- nodes.add(item)
256
- yield item
257
+ return cls._get_nodes_from_subgraphs(cls.get_unused_subgraphs())
258
+
259
+ @classmethod
260
+ def get_unused_edges(cls) -> Iterator[Edge]:
261
+ """
262
+ Returns an iterator over edges that are defined but not used in the graph.
263
+ """
264
+ return cls._get_edges_from_subgraphs(cls.get_unused_subgraphs())
257
265
 
258
266
  @classmethod
259
267
  def get_entrypoints(cls) -> Iterable[Type[BaseNode]]:
@@ -1,5 +1,6 @@
1
1
  import pytest
2
2
 
3
+ from vellum.workflows.edges.edge import Edge
3
4
  from vellum.workflows.inputs.base import BaseInputs
4
5
  from vellum.workflows.nodes.bases.base import BaseNode
5
6
  from vellum.workflows.nodes.core.inline_subworkflow_node.node import InlineSubworkflowNode
@@ -166,3 +167,49 @@ def test_workflow__node_in_both_graph_and_unused():
166
167
 
167
168
  # THEN it should raise an error
168
169
  assert "Node(s) NodeA cannot appear in both graph and unused_graphs" in str(exc_info.value)
170
+
171
+
172
+ def test_workflow__get_unused_edges():
173
+ """
174
+ Test that get_unused_edges correctly identifies edges that are defined but not used in the workflow graph.
175
+ """
176
+
177
+ class NodeA(BaseNode):
178
+ pass
179
+
180
+ class NodeB(BaseNode):
181
+ pass
182
+
183
+ class NodeC(BaseNode):
184
+ pass
185
+
186
+ class NodeD(BaseNode):
187
+ pass
188
+
189
+ class NodeE(BaseNode):
190
+ pass
191
+
192
+ class NodeF(BaseNode):
193
+ pass
194
+
195
+ class NodeG(BaseNode):
196
+ pass
197
+
198
+ class TestWorkflow(BaseWorkflow[BaseInputs, BaseState]):
199
+ graph = NodeA >> NodeB
200
+ unused_graphs = {NodeC >> {NodeD >> NodeE, NodeF} >> NodeG}
201
+
202
+ edge_c_to_d = Edge(from_port=NodeC.Ports.default, to_node=NodeD)
203
+ edge_c_to_f = Edge(from_port=NodeC.Ports.default, to_node=NodeF)
204
+ edge_d_to_e = Edge(from_port=NodeD.Ports.default, to_node=NodeE)
205
+ edge_e_to_g = Edge(from_port=NodeE.Ports.default, to_node=NodeG)
206
+ edge_f_to_g = Edge(from_port=NodeF.Ports.default, to_node=NodeG)
207
+
208
+ # Collect unused edges
209
+ unused_edges = set(TestWorkflow.get_unused_edges())
210
+
211
+ # Expected unused edges
212
+ expected_unused_edges = {edge_c_to_d, edge_c_to_f, edge_d_to_e, edge_e_to_g, edge_f_to_g}
213
+
214
+ # TEST that unused edges are correctly identified
215
+ assert unused_edges == expected_unused_edges, f"Expected {expected_unused_edges}, but got {unused_edges}"
@@ -0,0 +1,60 @@
1
+ from uuid import UUID, uuid4
2
+
3
+ from vellum.workflows import BaseWorkflow
4
+ from vellum.workflows.context import execution_context, get_execution_context
5
+ from vellum.workflows.events.types import NodeParentContext, WorkflowParentContext
6
+ from vellum.workflows.inputs import BaseInputs
7
+ from vellum.workflows.nodes import BaseNode
8
+ from vellum.workflows.references import VellumSecretReference
9
+ from vellum.workflows.state import BaseState
10
+
11
+
12
+ class MockInputs(BaseInputs):
13
+ foo: str
14
+
15
+
16
+ class MockNode(BaseNode):
17
+ node_foo = MockInputs.foo
18
+ node_secret = VellumSecretReference("secret")
19
+
20
+ class Outputs(BaseNode.Outputs):
21
+ example: str
22
+
23
+
24
+ class MockWorkflow(BaseWorkflow[MockInputs, BaseState]):
25
+ graph = MockNode
26
+
27
+
28
+ def test_context_trace_and_parent():
29
+ trace_id = uuid4()
30
+ parent_context = NodeParentContext(
31
+ node_definition=MockNode,
32
+ span_id=UUID("123e4567-e89b-12d3-a456-426614174000"),
33
+ parent=WorkflowParentContext(
34
+ workflow_definition=MockWorkflow,
35
+ span_id=UUID("123e4567-e89b-12d3-a456-426614174000"),
36
+ ),
37
+ )
38
+ second_parent_context = WorkflowParentContext(
39
+ workflow_definition=MockWorkflow, span_id=uuid4(), parent=parent_context
40
+ )
41
+ # When using execution context , if we set trace id within
42
+ with execution_context(parent_context=parent_context, trace_id=trace_id):
43
+ test = get_execution_context()
44
+ assert test.trace_id == trace_id
45
+ assert test.parent_context == parent_context
46
+ with execution_context(parent_context=second_parent_context):
47
+ test1 = get_execution_context()
48
+ assert test1.trace_id == trace_id
49
+ assert test1.parent_context == second_parent_context
50
+ # then we can assume trace id will not change
51
+ with execution_context(trace_id=uuid4()):
52
+ test3 = get_execution_context()
53
+ assert test3.trace_id == trace_id
54
+ with execution_context(parent_context=parent_context, trace_id=uuid4()):
55
+ test3 = get_execution_context()
56
+ assert test3.trace_id == trace_id
57
+ # and if we have a new context, the trace will differ
58
+ with execution_context(parent_context=parent_context, trace_id=uuid4()):
59
+ test = get_execution_context()
60
+ assert test.trace_id != trace_id
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vellum-ai
3
- Version: 0.14.4
3
+ Version: 0.14.6
4
4
  Summary:
5
5
  License: MIT
6
6
  Requires-Python: >=3.9,<4.0
@@ -28,8 +28,9 @@ vellum_ee/workflows/display/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5J
28
28
  vellum_ee/workflows/display/nodes/tests/test_base_node_display.py,sha256=QqR3Ly0RNrXwOeLdW5nERDFt0gRPf76n1bPES6o5UN4,1093
29
29
  vellum_ee/workflows/display/nodes/types.py,sha256=St1BB6no528OyELGiyRabWao0GGw6mLhstQAvEACbGk,247
30
30
  vellum_ee/workflows/display/nodes/utils.py,sha256=sloya5TpXsnot1HURc9L51INwflRqUzHxRVnCS9Cd-4,973
31
- vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=VHx6wSs9wuuiFlZpSQSd3mhECz4SUy2wEBuTSv--_As,1578
31
+ vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=nUIgH2s0-7IbQRNrBhLPyRNe8YIrx3Yo9HeeW-aXXFk,1668
32
32
  vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=hoV-cUtS6H9kmRQXHd2py95GRWI_dAnnaPwvlNBkDOQ,8571
33
+ vellum_ee/workflows/display/nodes/vellum/base_adornment_node.py,sha256=UlfX8ifleaAaRCmGlj6XNubEMJnHOgCXSBRk6LAZw38,1995
33
34
  vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=z00Z3L0d4PsUQo4S8FRDTtOFLtjdi17TJbatNVF4nM8,4288
34
35
  vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=ybLIa4uclqVIy3VAQvI1ivg2tnK5Ug_1R5a69DFqL7E,11104
35
36
  vellum_ee/workflows/display/nodes/vellum/error_node.py,sha256=I1Jkp2htRINJATtv1e-zs9BrReFX842djpiVgBPHDYg,2186
@@ -37,11 +38,11 @@ vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=p-PvlnxpBQ7
37
38
  vellum_ee/workflows/display/nodes/vellum/guardrail_node.py,sha256=aYZSJTxknU4LMiQdWk9LcK6CkhdozeDEMiRxfAyUNEc,2202
38
39
  vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=aNZhjw5CwpUO8IcLJ2nhYrzn96RJ3FWeJXdfDizuPzw,8491
39
40
  vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py,sha256=MU9I8CB1X1TgL1aa1eT6DHWwNJ-2v79t74xl0oy-fBo,5510
40
- vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=VlO3UwkspCOdDQ-h3v8k16-7JZwWNSLpOLT4p-eirIs,3740
41
+ vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=8CPnn06HIBxBOiECevUffeVmQmCpec6WtPQnNl9gj9Y,3748
41
42
  vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=HkNMgdQELiON42jdO-xDLmqrEKdGx1RVqrz2DXNTLS8,3239
42
43
  vellum_ee/workflows/display/nodes/vellum/note_node.py,sha256=TMb8txILu2uWjzoxaghjgjlzeBAgzn4vkP_8zSh2qoE,1151
43
44
  vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=LFjLUrH6sJ4czPnExdRqFr0PB_yKBMLXLvK5GAzIAgc,3273
44
- vellum_ee/workflows/display/nodes/vellum/retry_node.py,sha256=i0XGbKecLiHtf7mBf2rbqldPgLcs1TitIphzcHRIvkA,341
45
+ vellum_ee/workflows/display/nodes/vellum/retry_node.py,sha256=hVqTtuHjlw_cYJ3ydNAvUHfGEoQi5YocVONZUo4i_Gs,1717
45
46
  vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=TxcAGZDl_hvJ7Y1hUi9YVEVrj9Ie0hKkASdpfRL4_cs,9227
46
47
  vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=62baAElKoRKIoba0lLhnrXGWWx96B73VxKGxh7BaIxc,2612
47
48
  vellum_ee/workflows/display/nodes/vellum/templating_node.py,sha256=JVIMPR3WpveOCWZubHKZkE04mavnTdb_9QY_r3XliRg,3424
@@ -49,21 +50,21 @@ vellum_ee/workflows/display/nodes/vellum/tests/__init__.py,sha256=47DEQpj8HBSa-_
49
50
  vellum_ee/workflows/display/nodes/vellum/tests/test_error_node.py,sha256=ulrpoYUW-5kIxfG4Lf5F2p0k_EoYKhmahEbF3P_eruM,1648
50
51
  vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_node.py,sha256=bg9INsXiWfyK047u8TD1oEOFYrqDq8GC7Hvgz69n7BE,1988
51
52
  vellum_ee/workflows/display/nodes/vellum/tests/test_try_node.py,sha256=mtzB8LJlFCHVFM4H5AanLp29gQfaVmnN4A4iaRGJHoI,2427
52
- vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py,sha256=3uT7Gbc0f_mQ3u8uZuCWd0mJ4GtWbz2gbUMySYaVlNE,3774
53
- vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=EoU1J7HfcszAZr7ROy_xsNhaDBRiI95-wTK-OzgBwvg,5861
54
- vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=OEGHjQSbuUgJexXI1aubYW33z2F_YdkhQ8REahfz864,4320
53
+ vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py,sha256=4YUaTeD_OWF-UaPMyOTBTu9skGC1jgSHlAYrzbH7Z04,5039
54
+ vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=HBfGz4yt9GlmMW9JxzaCacPnHBDNIeXE8Jhqr9DqLLw,6191
55
+ vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=F_0BrlSszllK_BhryPbojIleLq2dGXOfQD1rVp3fNFg,4733
55
56
  vellum_ee/workflows/display/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
57
  vellum_ee/workflows/display/tests/test_vellum_workflow_display.py,sha256=1EEvkKQRfOKlnpLxE9-hKSsVLLaelM39LY7007LM5dg,4983
57
58
  vellum_ee/workflows/display/tests/workflow_serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
59
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
60
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py,sha256=A1-tIpC5KIKG9JA_rkd1nLS8zUG3Kb4QiVdvb3boFxE,2509
60
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py,sha256=KYdohS5pRgHM0DcUaK0tHa40f0gSvDKi2K5On0zNEU8,8305
61
+ vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py,sha256=7Fc-TtPw7hz_pvQ-TWz3G8Vy9h2AztukpyDK0p7REGU,9071
61
62
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py,sha256=1cszL6N6FNGVm61MOa7AEiHnF0QjZWqDQuPOp4yiG94,18277
62
63
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py,sha256=-12ZkZb3f5gyoNASV2yeQtMo5HmNsVEo8nXwL6IC-I8,6261
63
64
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py,sha256=6th6kCwzql6lddjkTQx4Jbvvs4ChqtJwctW-B4QuBhI,37352
64
65
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py,sha256=EbVgg_3_ipTt3MOop4RARX0fmNjwqZtkhIXzx9nGw7Y,4487
65
66
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=IRazH2QR6F8RGqNemEnHueyj5DtEa6rFTYhT16S4jI8,15917
66
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=PiHqgj-vLhlaOHoQFVVEW2YydYWLI0mX6nq_sbzZiy4,29233
67
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=V__y7uu-dy6TJjPeu4UDvaoO2yYwBRbPiW9uJdzWRx4,29828
67
68
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=R8DW1DUb0DOSLtnF2E1HaCTmtpG-ski0LfcM2WeLVNo,47672
68
69
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_state_serialization.py,sha256=z9FSufJeV-003R87wi_Lx4mZewdeeOeTPCGNc9vg8vY,8819
69
70
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=wgedEa2IVP2ssH_FLghoEmLgpJR41AY-iNIw1SESeqA,6106
@@ -78,7 +79,7 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_
78
79
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py,sha256=BzFNl9ECeGh0krm-CUjbBQQq0g7krANsp0Sh-j5dAkc,11322
79
80
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py,sha256=xXtW915v9yxxKlyu5ObzKHyJYMvobvev3ermX61SGx4,7818
80
81
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py,sha256=NdhE3lm7RMQ8DqkraPSq24IbOxNla9unbs4tsMWRzm4,3781
81
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=gHKU8Vg960ooV3uXqM2LMnVS-mGbv3aagGozQuTVTjI,2455
82
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=eD5686C9nWC5s6t08vbAnm9qf9t53gYQM-E1FwAa75c,3035
82
83
  vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=huKAOeMJ2MKmp6XtbvMJTUadqynoV40Ypoz9jsBEBEQ,7431
83
84
  vellum_ee/workflows/display/types.py,sha256=xDC1zy4rWKNqDtSr-h6MQfWnJ6scZ_Sadxp4t8Q3PY4,2897
84
85
  vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -114,12 +115,12 @@ vellum_ee/workflows/tests/local_workflow/workflow.py,sha256=A4qOzOPNwePYxWbcAgIP
114
115
  vellum_ee/workflows/tests/test_display_meta.py,sha256=pzdqND4KLWs7EUIbpXuqgso7BIRpoUsO3T_bgeENs0Q,2205
115
116
  vellum_ee/workflows/tests/test_server.py,sha256=SvKUrUPmOf3sIInXcFjETekql60npb4cAn1GPbF0bPs,391
116
117
  vellum_ee/workflows/tests/test_virtual_files.py,sha256=TJEcMR0v2S8CkloXNmCHA0QW0K6pYNGaIjraJz7sFvY,2762
117
- vellum/__init__.py,sha256=NPSLAe9-b6SSiyf-FrvMxVy-cKsAEerg8m_HhINTqmE,35794
118
+ vellum/__init__.py,sha256=BGZ28ICgCMzo3Qjj3IN3eMsvylstMCl9C1YKzrQNRnk,36024
118
119
  vellum/client/README.md,sha256=JkCJjmMZl4jrPj46pkmL9dpK4gSzQQmP5I7z4aME4LY,4749
119
- vellum/client/__init__.py,sha256=j6zi0NZ4BMC6JrwckvzMWuG5x8KoOvO4KqsLhvVCa68,117624
120
+ vellum/client/__init__.py,sha256=tKtdM1_GqmGq1gpi9ydWD_T-MM7fPn8QdHh8ww19cNI,117564
120
121
  vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
121
122
  vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
122
- vellum/client/core/client_wrapper.py,sha256=pxEwlQ6QCqqK61MR38NnSRA28GMZgrYhfxlyjX2Sy-Y,1868
123
+ vellum/client/core/client_wrapper.py,sha256=Hye69mrkKpKvBVFEfZKH3c08doQVIZ0VGlBRZZmgr0k,1868
123
124
  vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
124
125
  vellum/client/core/file.py,sha256=X9IbmkZmB2bB_DpmZAO3crWdXagOakAyn6UCOCImCPg,2322
125
126
  vellum/client/core/http_client.py,sha256=R0pQpCppnEtxccGvXl4uJ76s7ro_65Fo_erlNNLp_AI,19228
@@ -135,7 +136,7 @@ vellum/client/errors/bad_request_error.py,sha256=_EbO8mWqN9kFZPvIap8qa1lL_EWkRcs
135
136
  vellum/client/errors/forbidden_error.py,sha256=QO1kKlhClAPES6zsEK7g9pglWnxn3KWaOCAawWOg6Aw,263
136
137
  vellum/client/errors/internal_server_error.py,sha256=8USCagXyJJ1MOm9snpcXIUt6eNXvrd_aq7Gfcu1vlOI,268
137
138
  vellum/client/errors/not_found_error.py,sha256=tBVCeBC8n3C811WHRj_n-hs3h8MqwR5gp0vLiobk7W8,262
138
- vellum/client/resources/__init__.py,sha256=j-SQQ4yYDgxbT8MdAhz7BePlsQOX7uvbWM9mluf1FWs,1452
139
+ vellum/client/resources/__init__.py,sha256=g95miLphTYIegm6D-G3sWk-Sf0-5EulFpMGNJMxpp1Y,1567
139
140
  vellum/client/resources/ad_hoc/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
140
141
  vellum/client/resources/ad_hoc/client.py,sha256=_liorv4AsoJ55kVu0a5oWB3Qeff0iUKXqoHEIyDWLxc,14173
141
142
  vellum/client/resources/container_images/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
@@ -172,8 +173,10 @@ vellum/client/resources/workflow_deployments/client.py,sha256=H9MhGYZVx1WLHE5j83
172
173
  vellum/client/resources/workflow_deployments/types/__init__.py,sha256=W7DKJ1nduwhRckYLvH7wHLdaGH9MXHTZkxwG7FdTngY,340
173
174
  vellum/client/resources/workflow_deployments/types/list_workflow_release_tags_request_source.py,sha256=LPETHLX9Ygha_JRT9oWZAZR6clv-W1tTelXzktkTBX8,178
174
175
  vellum/client/resources/workflow_deployments/types/workflow_deployments_list_request_status.py,sha256=FXVkVmGM6DZ2RpTGnZXWJYiVlLQ-K5fDtX3WMaBPaWk,182
175
- vellum/client/resources/workflow_sandboxes/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
176
- vellum/client/resources/workflow_sandboxes/client.py,sha256=3wVQxkjrJ5bIS8fB5FpKXCP2dX38299ghWrJ8YmXxwQ,7435
176
+ vellum/client/resources/workflow_sandboxes/__init__.py,sha256=OR3wE3pTgsZlTS-0ukeMWzSuEZF8PszuQTCHDh6JybI,175
177
+ vellum/client/resources/workflow_sandboxes/client.py,sha256=4FfB7DCAo8DDd3CDlmRiycMjnZhP4oWEbfGuhtzVfwo,12404
178
+ vellum/client/resources/workflow_sandboxes/types/__init__.py,sha256=EaGVRU1w6kJiiHrbZOeEa0c3ggjfgv_jBqsyOkCRWOI,212
179
+ vellum/client/resources/workflow_sandboxes/types/list_workflow_sandbox_examples_request_tag.py,sha256=TEwWit20W3X-zWPPLAhmUG05UudG9gaBSJ4Q4-rNJws,188
177
180
  vellum/client/resources/workflows/__init__.py,sha256=Z4xi8Nxd9U4t35FQSepTt1p-ns0X1xtdNs168kUcuBk,153
178
181
  vellum/client/resources/workflows/client.py,sha256=hM7FDn05XHhQk599ti8CI4moIg0RVoEFil3Wp9v9UZk,11215
179
182
  vellum/client/resources/workflows/types/__init__.py,sha256=-uFca4ypncAOvfsg6sjD-5C9zWdA5qNvU6m675GphVg,177
@@ -182,7 +185,7 @@ vellum/client/resources/workspace_secrets/__init__.py,sha256=FTtvy8EDg9nNNg9WCat
182
185
  vellum/client/resources/workspace_secrets/client.py,sha256=h7UzXLyTttPq1t-JZGMg1BWxypxJvBGUdqg7KGT7MK4,8027
183
186
  vellum/client/resources/workspaces/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
184
187
  vellum/client/resources/workspaces/client.py,sha256=RthwzN1o-Jxwg5yyNNodavFyNUSxfLoTv26w3mRR5g8,3595
185
- vellum/client/types/__init__.py,sha256=HsQa33k5NOOW9zQdCCxp6REWnFHvqqR-vJl0RlNmxh0,53975
188
+ vellum/client/types/__init__.py,sha256=w4LPPCUDsYhlZyPcoN7B3cCwPDL87A-UIlYTtiO0zO4,54198
186
189
  vellum/client/types/ad_hoc_execute_prompt_event.py,sha256=bCjujA2XsOgyF3bRZbcEqV2rOIymRgsLoIRtZpB14xg,607
187
190
  vellum/client/types/ad_hoc_expand_meta.py,sha256=1gv-NCsy_6xBYupLvZH979yf2VMdxAU-l0y0ynMKZaw,1331
188
191
  vellum/client/types/ad_hoc_fulfilled_prompt_execution_meta.py,sha256=Bfvf1d_dkmshxRACVM5vcxbH_7AQY23RmrrnPc0ytYY,939
@@ -438,6 +441,7 @@ vellum/client/types/paginated_slim_workflow_deployment_list.py,sha256=b0SGPewaOK
438
441
  vellum/client/types/paginated_test_suite_run_execution_list.py,sha256=_NCKlKzs-8h0oZFhbGLO4sMt3xh9jicPqJdYu-NN-8c,1019
439
442
  vellum/client/types/paginated_test_suite_test_case_list.py,sha256=9KrCCQKy0egMmVx5U2k6o1GjNrUYpVvGG_hm2cHqIzc,995
440
443
  vellum/client/types/paginated_workflow_release_tag_read_list.py,sha256=dH24ESWyAMVtyHsBkxG8kJ9oORY04Wn3IN-7jvV7Lu4,818
444
+ vellum/client/types/paginated_workflow_sandbox_example_list.py,sha256=rCivuKp5fzVV8PdRwyiet7bEmLxX_1hv8N0vn0xaT70,817
441
445
  vellum/client/types/pdf_search_result_meta_source.py,sha256=EMVhqdN1bwE6Ujdx4VhlmKQtJvitN-57kY8oZPxh9dI,1126
442
446
  vellum/client/types/pdf_search_result_meta_source_request.py,sha256=nUhaD2Kw1paGC6O_ICVNu3R0e1SVgTshRTkGNgmcjXo,1133
443
447
  vellum/client/types/plain_text_prompt_block.py,sha256=cqEN-B4mcvMw_9lBN7FQG8pk9b5LBJ9xpM6PTgkGiqs,930
@@ -674,6 +678,7 @@ vellum/client/types/workflow_result_event_output_data_json.py,sha256=8MrgcTSVUby
674
678
  vellum/client/types/workflow_result_event_output_data_number.py,sha256=OZYYUF3ayq7gyaesRK3YRaTMVgxFdeFGtOpTPWX10yk,1081
675
679
  vellum/client/types/workflow_result_event_output_data_search_results.py,sha256=U34IK7ZvBG70ZBO4SEqbaNzIrV9Zn1NXabNh3M9v_hg,1172
676
680
  vellum/client/types/workflow_result_event_output_data_string.py,sha256=tM3kgh6tEhD0dFEb_7UU0-UspeN4pUdINCcCrD64W74,1228
681
+ vellum/client/types/workflow_sandbox_example.py,sha256=ZYFI7ZahyRYMNVmF8LZcF-_lkhqt95WiWXT6SpxnFHk,666
677
682
  vellum/client/types/workflow_stream_event.py,sha256=Wn3Yzuy9MqWAeo8tEaXDTKDEbJoA8DdYdMVq8EKuhu8,361
678
683
  vellum/client/types/workspace_read.py,sha256=ocPtWvOwadqkU3z21bJgE4JeLYTAkOqBlKkc9lDDFFg,697
679
684
  vellum/client/types/workspace_secret_read.py,sha256=3CnHDG72IAY0KRNvc31F0xLmhnpwjQHnDYCfQJzCxI0,714
@@ -754,6 +759,8 @@ vellum/resources/workflow_deployments/types/list_workflow_release_tags_request_s
754
759
  vellum/resources/workflow_deployments/types/workflow_deployments_list_request_status.py,sha256=mLfHzwK3uBQfw8nku6YmceHoaWksRPRZzpNBy9MGBv4,209
755
760
  vellum/resources/workflow_sandboxes/__init__.py,sha256=jHqdk62iizWsMzrhlXMhAON5eX4CRgL7ipux4MqoK2Y,160
756
761
  vellum/resources/workflow_sandboxes/client.py,sha256=6hUU770XG4lOoZZOwvAqmUz5XZDgRd3MPWZs1wieWEM,167
762
+ vellum/resources/workflow_sandboxes/types/__init__.py,sha256=jMwkDLd5Xc4hheGoU-h087t1L3qxp4llmT6MG5MeufA,166
763
+ vellum/resources/workflow_sandboxes/types/list_workflow_sandbox_examples_request_tag.py,sha256=ylKYQDob7ivDO05K9Y21qfAYQmWvsuhu25C6CKjby5c,209
757
764
  vellum/resources/workflows/__init__.py,sha256=NhC5vYlg2Jre4lekOubbziseG5_k2c9-tlxGJ2zNVHU,151
758
765
  vellum/resources/workflows/client.py,sha256=HVVkYDhHnodVD-MAj1oABf4PGVHr4XNGJrMnShuX-Oc,158
759
766
  vellum/resources/workflows/types/__init__.py,sha256=n3dH29XbL5XgAZesnDu2WVWUd_JqPU-s1vOKU_56oDs,157
@@ -1018,6 +1025,7 @@ vellum/types/paginated_slim_workflow_deployment_list.py,sha256=3QgvxRFqcOw9z-cl0
1018
1025
  vellum/types/paginated_test_suite_run_execution_list.py,sha256=XEr928_4w9Rw9_q6dshxPWfXXptLdRlDp-frKIIcdYQ,177
1019
1026
  vellum/types/paginated_test_suite_test_case_list.py,sha256=LoyXDEr2yXrkniJ25HctBWvhqKQ987XItukUwPYUIhQ,173
1020
1027
  vellum/types/paginated_workflow_release_tag_read_list.py,sha256=XUeQn_6JPJ6K2qts-NZIEEZF94C3U2AosStc2k57eWY,178
1028
+ vellum/types/paginated_workflow_sandbox_example_list.py,sha256=FlPNK6QtzQL9yD-k_qpQrE8yMARrJRjk5aGf6ZTbGyY,177
1021
1029
  vellum/types/pdf_search_result_meta_source.py,sha256=tkM53z99Zky8ifkcfj1HoS7k-scjy6xeVInVDjMTBzM,167
1022
1030
  vellum/types/pdf_search_result_meta_source_request.py,sha256=TW9FWTdqZi-SuERKkjMdrKBgQEq3RA4W9nwefm8it6k,175
1023
1031
  vellum/types/plain_text_prompt_block.py,sha256=K5tGXMDCVTLDIDOL17TjLvZD6pMaHnRtcSYfXOrzQMM,161
@@ -1254,6 +1262,7 @@ vellum/types/workflow_result_event_output_data_json.py,sha256=z5uMkd759__fTOKWDA
1254
1262
  vellum/types/workflow_result_event_output_data_number.py,sha256=TtQhFjBxV8zc036NkvBrYhWWHEmaUJk2RWAd1NKVtz0,178
1255
1263
  vellum/types/workflow_result_event_output_data_search_results.py,sha256=UNfCHLQ0jd5advLYdV7IBgmsRNzJ0PdDd3r2dNiIlgY,186
1256
1264
  vellum/types/workflow_result_event_output_data_string.py,sha256=rHEVbN0nyf-xoDoSIUEKlUKh6DDoguer4w0iN18JQ2I,178
1265
+ vellum/types/workflow_sandbox_example.py,sha256=PixQSt8aczB-oUT8qTL6k9nY-H2Mx7XvispKV0thUHM,162
1257
1266
  vellum/types/workflow_stream_event.py,sha256=PjHGgN0eJm5w-5FJ6__ASC1FU94Gsav_ko5JWkpVvK8,159
1258
1267
  vellum/types/workspace_read.py,sha256=9CvgvK8Li8vL6qC5KX7f3-nEHslJ4lw2w07bvXcrjA0,152
1259
1268
  vellum/types/workspace_secret_read.py,sha256=Z6QNXHxVHRdrLXSI31KxngePRwJTVoJYMXVbtPQwrxs,159
@@ -1271,7 +1280,7 @@ vellum/version.py,sha256=jq-1PlAYxN9AXuaZqbYk9ak27SgE2lw9Ia5gx1b1gVI,76
1271
1280
  vellum/workflows/README.md,sha256=MLNm-ihc0ao6I8gwwOhXQQBf0jOf-EsA9C519ALYI1o,3610
1272
1281
  vellum/workflows/__init__.py,sha256=CssPsbNvN6rDhoLuqpEv7MMKGa51vE6dvAh6U31Pcio,71
1273
1282
  vellum/workflows/constants.py,sha256=2yg4_uo5gpqViy3ZLSwfC8qTybleYCtOnhA4Rj6bacM,1310
1274
- vellum/workflows/context.py,sha256=R8qdsFbD_0p7B6PWnyvSrZ_aOgMtGw-_uk0P0UAmwLA,1230
1283
+ vellum/workflows/context.py,sha256=DwSf8lO9NHABiqOoD3exgrjUoRuNsKtutaL5TgRbD-A,1441
1275
1284
  vellum/workflows/descriptors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1276
1285
  vellum/workflows/descriptors/base.py,sha256=gSib3vJpcI_UC8y8jhdp-hOK3_TGTF-SuwdhxF6x5iQ,14332
1277
1286
  vellum/workflows/descriptors/exceptions.py,sha256=gUy4UD9JFUKSeQnQpeuDSLiRqWjWiIsxLahB7p_q3JY,54
@@ -1380,8 +1389,8 @@ vellum/workflows/nodes/displayable/code_execution_node/node.py,sha256=_yrQn_uLwy
1380
1389
  vellum/workflows/nodes/displayable/code_execution_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1381
1390
  vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1382
1391
  vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/main.py,sha256=5QsbmkzSlSbcbWTG_JmIqcP-JNJzOPTKxGzdHos19W4,79
1383
- vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py,sha256=5WHsW_uEKDn1ukM9_O2FsGCYELfONz-2h_kYnNRNYHE,18333
1384
- vellum/workflows/nodes/displayable/code_execution_node/utils.py,sha256=rdWD1wtxPKHbdHRHEdTeRMSJi9sgAm2t0FqeAWuQHlQ,4534
1392
+ vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py,sha256=4ADDKsObtUs0PhcWyAjWyQcAF7PGUYE0CxjYp8d-1NM,20637
1393
+ vellum/workflows/nodes/displayable/code_execution_node/utils.py,sha256=BQraIN4I3DCzXLEuBlRYCyp7ote7hQmnnKHu4jFHCCA,5174
1385
1394
  vellum/workflows/nodes/displayable/conditional_node/__init__.py,sha256=AS_EIqFdU1F9t8aLmbZU-rLh9ry6LCJ0uj0D8F0L5Uw,72
1386
1395
  vellum/workflows/nodes/displayable/conditional_node/node.py,sha256=Qjfl33gZ3JEgxBA1EgzSUebboGvsARthIxxcQyvx5Gg,1152
1387
1396
  vellum/workflows/nodes/displayable/final_output_node/__init__.py,sha256=G7VXM4OWpubvSJtVkGmMNeqgb9GkM7qZT838eL18XU4,72
@@ -1397,7 +1406,7 @@ vellum/workflows/nodes/displayable/merge_node/node.py,sha256=nZtGGVAvY4fvGg8vwV6
1397
1406
  vellum/workflows/nodes/displayable/note_node/__init__.py,sha256=KWA3P4fyYJ-fOTky8qNGlcOotQ-HeHJ9AjZt6mRQmCE,58
1398
1407
  vellum/workflows/nodes/displayable/note_node/node.py,sha256=sIN1VBQ7zeT3GhN0kupXbFfdpvgedWV79k4woJNp5IQ,394
1399
1408
  vellum/workflows/nodes/displayable/prompt_deployment_node/__init__.py,sha256=krX1Hds-TSVYZsx0wJFX4wsAKkEFYOX1ifwRGiIM-EA,82
1400
- vellum/workflows/nodes/displayable/prompt_deployment_node/node.py,sha256=ruOgvpg_9KV_HkovPQeu6TKpur9DT_J4CYQo50tULCY,2680
1409
+ vellum/workflows/nodes/displayable/prompt_deployment_node/node.py,sha256=pb-KbrnfTRL7mmNtVAMmiCiys8raXkl5Od7sIu682xU,2707
1401
1410
  vellum/workflows/nodes/displayable/prompt_deployment_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1402
1411
  vellum/workflows/nodes/displayable/prompt_deployment_node/tests/test_node.py,sha256=ymEwMwrwRuQGyvkTnqeRZvfK7dhnf-kmRJTuwlycNjI,3939
1403
1412
  vellum/workflows/nodes/displayable/search_node/__init__.py,sha256=hpBpvbrDYf43DElRZFLzieSn8weXiwNiiNOJurERQbs,62
@@ -1405,9 +1414,9 @@ vellum/workflows/nodes/displayable/search_node/node.py,sha256=_VHHuTNN4icZBgc7O5
1405
1414
  vellum/workflows/nodes/displayable/search_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1406
1415
  vellum/workflows/nodes/displayable/search_node/tests/test_node.py,sha256=2-QCV7Vk_-YMls33p0GOUtCv3f2uPNZCjkB2CRjek7o,6562
1407
1416
  vellum/workflows/nodes/displayable/subworkflow_deployment_node/__init__.py,sha256=9yYM6001YZeqI1VOk1QuEM_yrffk_EdsO7qaPzINKds,92
1408
- vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=sSRo_zX5QVI7V0qmReWMBkEa78HfQfjNIKwvKh7-Om8,8307
1417
+ vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=9yqklkehUWLFhjIAC2WrkoMNqqvzHj1-hsuIVLXJHfo,8657
1409
1418
  vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1410
- vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/test_node.py,sha256=c8RP-QnsERzIinVytAc0jVZ9nd7Jl3hbc9-_yG91Ros,5445
1419
+ vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/test_node.py,sha256=qHnwn1KI4XpxM1b1zmCXEZUBxe5Sjk88ehxZ8HIGJQc,6353
1411
1420
  vellum/workflows/nodes/displayable/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1412
1421
  vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py,sha256=LaxohBcKfSW2PSiBBlx67FdW_q4YC2BM2ouH-vuGPAA,4700
1413
1422
  vellum/workflows/nodes/displayable/tests/test_search_node_wth_text_output.py,sha256=VepO5z1277c1y5N6LLIC31nnWD1aak2m5oPFplfJHHs,6935
@@ -1470,12 +1479,13 @@ vellum/workflows/utils/uuids.py,sha256=DFzPv9RCvsKhvdTEIQyfSek2A31D6S_QcmeLPbgrg
1470
1479
  vellum/workflows/utils/vellum_variables.py,sha256=fC2aSLvlS31D15dOWu43LBRR0QsgUKNXBiCUvvaLXSs,3231
1471
1480
  vellum/workflows/vellum_client.py,sha256=ODrq_TSl-drX2aezXegf7pizpWDVJuTXH-j6528t75s,683
1472
1481
  vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
1473
- vellum/workflows/workflows/base.py,sha256=eHa5iojvXFl3_vSb3jCoYt24dZdjppoohAqv99z8xRY,22096
1482
+ vellum/workflows/workflows/base.py,sha256=k3GfMDbhsa0pNGGHEaqJFbACyIJf_-wZMOz3FFtr_ls,22192
1474
1483
  vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnadGsrSZGa7t7LpJA,2008
1475
1484
  vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1476
- vellum/workflows/workflows/tests/test_base_workflow.py,sha256=dTwC2VIqXNJ5yJ3MPwGNB9QpVzVzycT2kiBIljxhCwM,4836
1477
- vellum_ai-0.14.4.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1478
- vellum_ai-0.14.4.dist-info/METADATA,sha256=cV7wQcYIgzVrVDPeufin7dSQ5sRFUGtzbAhDw9kYKKc,5407
1479
- vellum_ai-0.14.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1480
- vellum_ai-0.14.4.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1481
- vellum_ai-0.14.4.dist-info/RECORD,,
1485
+ vellum/workflows/workflows/tests/test_base_workflow.py,sha256=DTfXqHUF0SJELTVSA9PCOWHVoAylqpDNFZTkQM44CdU,6215
1486
+ vellum/workflows/workflows/tests/test_context.py,sha256=VJBUcyWVtMa_lE5KxdhgMu0WYNYnUQUDvTF7qm89hJ0,2333
1487
+ vellum_ai-0.14.6.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1488
+ vellum_ai-0.14.6.dist-info/METADATA,sha256=gJeL8u5StNSUb5b8gENXqxj5mH0etlqQWLtWKBvE_eY,5407
1489
+ vellum_ai-0.14.6.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1490
+ vellum_ai-0.14.6.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1491
+ vellum_ai-0.14.6.dist-info/RECORD,,
@@ -1,4 +1,5 @@
1
1
  from .api_node import BaseAPINodeDisplay
2
+ from .base_adornment_node import BaseAdornmentNodeDisplay
2
3
  from .code_execution_node import BaseCodeExecutionNodeDisplay
3
4
  from .conditional_node import BaseConditionalNodeDisplay
4
5
  from .error_node import BaseErrorNodeDisplay
@@ -18,6 +19,7 @@ from .try_node import BaseTryNodeDisplay
18
19
 
19
20
  # All node display classes must be imported here to be registered in BaseNodeDisplay's node display registry
20
21
  __all__ = [
22
+ "BaseAdornmentNodeDisplay",
21
23
  "BaseAPINodeDisplay",
22
24
  "BaseCodeExecutionNodeDisplay",
23
25
  "BaseConditionalNodeDisplay",