vellum-ai 0.10.7__py3-none-any.whl → 0.10.9__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 (41) hide show
  1. vellum/client/core/client_wrapper.py +1 -1
  2. vellum/client/types/logical_operator.py +2 -0
  3. vellum/workflows/descriptors/utils.py +27 -0
  4. vellum/workflows/events/__init__.py +0 -2
  5. vellum/workflows/events/tests/test_event.py +2 -1
  6. vellum/workflows/events/types.py +36 -30
  7. vellum/workflows/events/workflow.py +14 -7
  8. vellum/workflows/nodes/bases/base.py +100 -38
  9. vellum/workflows/nodes/core/inline_subworkflow_node/node.py +1 -0
  10. vellum/workflows/nodes/core/templating_node/node.py +5 -0
  11. vellum/workflows/nodes/core/try_node/node.py +22 -4
  12. vellum/workflows/nodes/core/try_node/tests/test_node.py +15 -0
  13. vellum/workflows/nodes/displayable/api_node/node.py +1 -1
  14. vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py +1 -2
  15. vellum/workflows/nodes/displayable/code_execution_node/node.py +1 -2
  16. vellum/workflows/nodes/displayable/code_execution_node/utils.py +13 -2
  17. vellum/workflows/nodes/displayable/inline_prompt_node/node.py +10 -3
  18. vellum/workflows/nodes/displayable/prompt_deployment_node/node.py +6 -1
  19. vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py +1 -2
  20. vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py +1 -2
  21. vellum/workflows/runner/runner.py +141 -32
  22. vellum/workflows/state/base.py +55 -21
  23. vellum/workflows/state/context.py +26 -3
  24. vellum/workflows/types/__init__.py +5 -0
  25. vellum/workflows/types/core.py +1 -1
  26. vellum/workflows/workflows/base.py +51 -17
  27. vellum/workflows/workflows/event_filters.py +61 -0
  28. {vellum_ai-0.10.7.dist-info → vellum_ai-0.10.9.dist-info}/METADATA +1 -1
  29. {vellum_ai-0.10.7.dist-info → vellum_ai-0.10.9.dist-info}/RECORD +40 -38
  30. vellum_cli/__init__.py +23 -4
  31. vellum_cli/pull.py +28 -13
  32. vellum_cli/tests/test_pull.py +45 -2
  33. vellum_ee/workflows/display/nodes/base_node_display.py +1 -1
  34. vellum_ee/workflows/display/nodes/vellum/__init__.py +6 -4
  35. vellum_ee/workflows/display/nodes/vellum/code_execution_node.py +17 -2
  36. vellum_ee/workflows/display/nodes/vellum/error_node.py +49 -0
  37. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py +203 -0
  38. vellum/workflows/events/utils.py +0 -5
  39. {vellum_ai-0.10.7.dist-info → vellum_ai-0.10.9.dist-info}/LICENSE +0 -0
  40. {vellum_ai-0.10.7.dist-info → vellum_ai-0.10.9.dist-info}/WHEEL +0 -0
  41. {vellum_ai-0.10.7.dist-info → vellum_ai-0.10.9.dist-info}/entry_points.txt +0 -0
@@ -1,14 +1,24 @@
1
1
  from functools import cached_property
2
- from typing import Optional
2
+ from queue import Queue
3
+ from typing import TYPE_CHECKING, Optional
3
4
 
4
5
  from vellum import Vellum
5
-
6
+ from vellum.workflows.events.types import ParentContext
6
7
  from vellum.workflows.vellum_client import create_vellum_client
7
8
 
9
+ if TYPE_CHECKING:
10
+ from vellum.workflows.events.workflow import WorkflowEvent
11
+
8
12
 
9
13
  class WorkflowContext:
10
- def __init__(self, _vellum_client: Optional[Vellum] = None):
14
+ def __init__(
15
+ self,
16
+ _vellum_client: Optional[Vellum] = None,
17
+ _parent_context: Optional[ParentContext] = None,
18
+ ):
11
19
  self._vellum_client = _vellum_client
20
+ self._parent_context = _parent_context
21
+ self._event_queue: Optional[Queue["WorkflowEvent"]] = None
12
22
 
13
23
  @cached_property
14
24
  def vellum_client(self) -> Vellum:
@@ -16,3 +26,16 @@ class WorkflowContext:
16
26
  return self._vellum_client
17
27
 
18
28
  return create_vellum_client()
29
+
30
+ @cached_property
31
+ def parent_context(self) -> Optional[ParentContext]:
32
+ if self._parent_context:
33
+ return self._parent_context
34
+ return None
35
+
36
+ def _emit_subworkflow_event(self, event: "WorkflowEvent") -> None:
37
+ if self._event_queue:
38
+ self._event_queue.put(event)
39
+
40
+ def _register_event_queue(self, event_queue: Queue["WorkflowEvent"]) -> None:
41
+ self._event_queue = event_queue
@@ -0,0 +1,5 @@
1
+ from .core import MergeBehavior
2
+
3
+ __all__ = [
4
+ "MergeBehavior",
5
+ ]
@@ -83,7 +83,7 @@ EntityInputsInterface = Dict[
83
83
  class MergeBehavior(Enum):
84
84
  AWAIT_ALL = "AWAIT_ALL"
85
85
  AWAIT_ANY = "AWAIT_ANY"
86
-
86
+ AWAIT_ATTRIBUTES = "AWAIT_ATTRIBUTES"
87
87
 
88
88
  class ConditionType(Enum):
89
89
  IF = "IF"
@@ -4,6 +4,8 @@ import importlib
4
4
  import inspect
5
5
 
6
6
  from vellum.plugins.utils import load_runtime_plugins
7
+ from vellum.workflows.events.types import CodeResourceDefinition
8
+ from vellum.workflows.workflows.event_filters import workflow_event_filter
7
9
 
8
10
  load_runtime_plugins()
9
11
 
@@ -13,6 +15,7 @@ from threading import Event as ThreadingEvent
13
15
  from uuid import uuid4
14
16
  from typing import (
15
17
  Any,
18
+ Callable,
16
19
  ClassVar,
17
20
  Dict,
18
21
  Generator,
@@ -47,7 +50,6 @@ from vellum.workflows.events.node import (
47
50
  NodeExecutionStreamingBody,
48
51
  NodeExecutionStreamingEvent,
49
52
  )
50
- from vellum.workflows.events.types import WorkflowEventType
51
53
  from vellum.workflows.events.workflow import (
52
54
  GenericWorkflowEvent,
53
55
  WorkflowExecutionFulfilledBody,
@@ -116,7 +118,9 @@ class BaseWorkflow(Generic[WorkflowInputsType, StateType], metaclass=_BaseWorkfl
116
118
  ):
117
119
  self._parent_state = parent_state
118
120
  self.emitters = emitters or (self.emitters if hasattr(self, "emitters") else [])
119
- self.resolvers = resolvers or (self.resolvers if hasattr(self, "resolvers") else [])
121
+ self.resolvers = resolvers or (
122
+ self.resolvers if hasattr(self, "resolvers") else []
123
+ )
120
124
  self._context = context or WorkflowContext()
121
125
  self._store = Store()
122
126
 
@@ -133,7 +137,8 @@ class BaseWorkflow(Generic[WorkflowInputsType, StateType], metaclass=_BaseWorkfl
133
137
  return [original_graph]
134
138
  if isinstance(original_graph, set):
135
139
  return [
136
- subgraph if isinstance(subgraph, Graph) else Graph.from_node(subgraph) for subgraph in original_graph
140
+ subgraph if isinstance(subgraph, Graph) else Graph.from_node(subgraph)
141
+ for subgraph in original_graph
137
142
  ]
138
143
  if issubclass(original_graph, BaseNode):
139
144
  return [Graph.from_node(original_graph)]
@@ -188,11 +193,17 @@ class BaseWorkflow(Generic[WorkflowInputsType, StateType], metaclass=_BaseWorkfl
188
193
  entrypoint_nodes=entrypoint_nodes,
189
194
  external_inputs=external_inputs,
190
195
  cancel_signal=cancel_signal,
196
+ parent_context=self._context.parent_context,
191
197
  ).stream()
192
- first_event: Optional[Union[WorkflowExecutionInitiatedEvent, WorkflowExecutionResumedEvent]] = None
198
+ first_event: Optional[
199
+ Union[WorkflowExecutionInitiatedEvent, WorkflowExecutionResumedEvent]
200
+ ] = None
193
201
  last_event = None
194
202
  for event in events:
195
- if event.name == "workflow.execution.initiated" or event.name == "workflow.execution.resumed":
203
+ if (
204
+ event.name == "workflow.execution.initiated"
205
+ or event.name == "workflow.execution.resumed"
206
+ ):
196
207
  first_event = event
197
208
  last_event = event
198
209
 
@@ -201,7 +212,10 @@ class BaseWorkflow(Generic[WorkflowInputsType, StateType], metaclass=_BaseWorkfl
201
212
  trace_id=uuid4(),
202
213
  span_id=uuid4(),
203
214
  body=WorkflowExecutionRejectedBody(
204
- error=VellumError(code=VellumErrorCode.INTERNAL_ERROR, message="No events were emitted"),
215
+ error=VellumError(
216
+ code=VellumErrorCode.INTERNAL_ERROR,
217
+ message="No events were emitted",
218
+ ),
205
219
  workflow_definition=self.__class__,
206
220
  ),
207
221
  )
@@ -212,7 +226,8 @@ class BaseWorkflow(Generic[WorkflowInputsType, StateType], metaclass=_BaseWorkfl
212
226
  span_id=uuid4(),
213
227
  body=WorkflowExecutionRejectedBody(
214
228
  error=VellumError(
215
- code=VellumErrorCode.INTERNAL_ERROR, message="Initiated event was never emitted"
229
+ code=VellumErrorCode.INTERNAL_ERROR,
230
+ message="Initiated event was never emitted",
216
231
  ),
217
232
  workflow_definition=self.__class__,
218
233
  ),
@@ -239,14 +254,16 @@ class BaseWorkflow(Generic[WorkflowInputsType, StateType], metaclass=_BaseWorkfl
239
254
 
240
255
  def stream(
241
256
  self,
242
- event_types: Optional[Set[WorkflowEventType]] = None,
257
+ event_filter: Optional[
258
+ Callable[[Type["BaseWorkflow"], WorkflowEvent], bool]
259
+ ] = None,
243
260
  inputs: Optional[WorkflowInputsType] = None,
244
261
  state: Optional[StateType] = None,
245
262
  entrypoint_nodes: Optional[RunFromNodeArg] = None,
246
263
  external_inputs: Optional[ExternalInputsArg] = None,
247
264
  cancel_signal: Optional[ThreadingEvent] = None,
248
265
  ) -> WorkflowEventStream:
249
- event_types = event_types or {WorkflowEventType.WORKFLOW}
266
+ should_yield = event_filter or workflow_event_filter
250
267
  for event in WorkflowRunner(
251
268
  self,
252
269
  inputs=inputs,
@@ -254,8 +271,9 @@ class BaseWorkflow(Generic[WorkflowInputsType, StateType], metaclass=_BaseWorkfl
254
271
  entrypoint_nodes=entrypoint_nodes,
255
272
  external_inputs=external_inputs,
256
273
  cancel_signal=cancel_signal,
274
+ parent_context=self.context.parent_context,
257
275
  ).stream():
258
- if WorkflowEventType(event.name.split(".")[0].upper()) in event_types:
276
+ if should_yield(self.__class__, event):
259
277
  yield event
260
278
 
261
279
  def validate(self) -> None:
@@ -268,7 +286,9 @@ class BaseWorkflow(Generic[WorkflowInputsType, StateType], metaclass=_BaseWorkfl
268
286
 
269
287
  @classmethod
270
288
  @lru_cache
271
- def _get_parameterized_classes(cls) -> Tuple[Type[WorkflowInputsType], Type[StateType]]:
289
+ def _get_parameterized_classes(
290
+ cls,
291
+ ) -> Tuple[Type[WorkflowInputsType], Type[StateType]]:
272
292
  original_base = get_original_base(cls)
273
293
 
274
294
  inputs_type, state_type = get_args(original_base)
@@ -279,10 +299,14 @@ class BaseWorkflow(Generic[WorkflowInputsType, StateType], metaclass=_BaseWorkfl
279
299
  state_type = BaseState
280
300
 
281
301
  if not issubclass(inputs_type, BaseInputs):
282
- raise ValueError(f"Expected first type to be a subclass of BaseInputs, was: {inputs_type}")
302
+ raise ValueError(
303
+ f"Expected first type to be a subclass of BaseInputs, was: {inputs_type}"
304
+ )
283
305
 
284
306
  if not issubclass(state_type, BaseState):
285
- raise ValueError(f"Expected second type to be a subclass of BaseState, was: {state_type}")
307
+ raise ValueError(
308
+ f"Expected second type to be a subclass of BaseState, was: {state_type}"
309
+ )
286
310
 
287
311
  return (inputs_type, state_type)
288
312
 
@@ -297,15 +321,23 @@ class BaseWorkflow(Generic[WorkflowInputsType, StateType], metaclass=_BaseWorkfl
297
321
  def get_default_inputs(self) -> WorkflowInputsType:
298
322
  return self.get_inputs_class()()
299
323
 
300
- def get_default_state(self, workflow_inputs: Optional[WorkflowInputsType] = None) -> StateType:
324
+ def get_default_state(
325
+ self, workflow_inputs: Optional[WorkflowInputsType] = None
326
+ ) -> StateType:
301
327
  return self.get_state_class()(
302
- meta=StateMeta(parent=self._parent_state, workflow_inputs=workflow_inputs or self.get_default_inputs())
328
+ meta=StateMeta(
329
+ parent=self._parent_state,
330
+ workflow_inputs=workflow_inputs or self.get_default_inputs(),
331
+ )
303
332
  )
304
333
 
305
334
  def get_state_at_node(self, node: Type[BaseNode]) -> StateType:
306
335
  event_ts = datetime.min
307
336
  for event in self._store.events:
308
- if event.name == "node.execution.initiated" and event.node_definition == node:
337
+ if (
338
+ event.name == "node.execution.initiated"
339
+ and event.node_definition == node
340
+ ):
309
341
  event_ts = event.timestamp
310
342
 
311
343
  most_recent_state_snapshot: Optional[StateType] = None
@@ -327,7 +359,9 @@ class BaseWorkflow(Generic[WorkflowInputsType, StateType], metaclass=_BaseWorkfl
327
359
  next_state = cast(StateType, snapshot)
328
360
  if not most_recent_state_snapshot:
329
361
  most_recent_state_snapshot = next_state
330
- elif next_state.meta.updated_ts >= most_recent_state_snapshot.meta.updated_ts:
362
+ elif (
363
+ next_state.meta.updated_ts >= most_recent_state_snapshot.meta.updated_ts
364
+ ):
331
365
  most_recent_state_snapshot = next_state
332
366
 
333
367
  if not most_recent_state_snapshot:
@@ -0,0 +1,61 @@
1
+ from typing import TYPE_CHECKING, Type
2
+
3
+ from vellum.workflows.events.types import CodeResourceDefinition
4
+
5
+ if TYPE_CHECKING:
6
+ from vellum.workflows.events.workflow import WorkflowEvent
7
+ from vellum.workflows.workflows.base import BaseWorkflow
8
+
9
+
10
+ def workflow_event_filter(
11
+ workflow_definition: Type["BaseWorkflow"], event: "WorkflowEvent"
12
+ ) -> bool:
13
+ """
14
+ Filters for only Workflow events that were emitted by the `workflow_definition` parameter.
15
+ """
16
+
17
+ if (
18
+ event.name == "workflow.execution.initiated"
19
+ or event.name == "workflow.execution.resumed"
20
+ or event.name == "workflow.execution.fulfilled"
21
+ or event.name == "workflow.execution.rejected"
22
+ or event.name == "workflow.execution.paused"
23
+ or event.name == "workflow.execution.streaming"
24
+ ):
25
+ return event.workflow_definition == workflow_definition
26
+
27
+ return False
28
+
29
+
30
+ def root_workflow_event_filter(
31
+ workflow_definition: Type["BaseWorkflow"], event: "WorkflowEvent"
32
+ ) -> bool:
33
+ """
34
+ Filters for Workflow and Node events that were emitted by the `workflow_definition` parameter.
35
+ """
36
+
37
+ if (
38
+ event.name == "workflow.execution.initiated"
39
+ or event.name == "workflow.execution.resumed"
40
+ or event.name == "workflow.execution.fulfilled"
41
+ or event.name == "workflow.execution.rejected"
42
+ or event.name == "workflow.execution.paused"
43
+ or event.name == "workflow.execution.streaming"
44
+ ):
45
+ return event.workflow_definition == workflow_definition
46
+
47
+ if not event.parent:
48
+ return False
49
+
50
+ if event.parent.type != "WORKFLOW":
51
+ return False
52
+
53
+ return event.parent.workflow_definition == CodeResourceDefinition.encode(
54
+ workflow_definition
55
+ )
56
+
57
+
58
+ def all_workflow_event_filter(
59
+ workflow_definition: Type["BaseWorkflow"], event: "WorkflowEvent"
60
+ ) -> bool:
61
+ return True
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vellum-ai
3
- Version: 0.10.7
3
+ Version: 0.10.9
4
4
  Summary:
5
5
  License: MIT
6
6
  Requires-Python: >=3.9,<4.0
@@ -1,31 +1,32 @@
1
1
  vellum_cli/CONTRIBUTING.md,sha256=FtDC7BGxSeMnwCXAUssFsAIElXtmJE-O5Z7BpolcgvI,2935
2
2
  vellum_cli/README.md,sha256=2NudRoLzWxNKqnuVy1JuQ7DerIaxWGYkrH8kMd-asIE,90
3
- vellum_cli/__init__.py,sha256=t62kIq0vDia8TTJqAmqFpYCo40buWNDQmjIDTOvmwwE,2416
3
+ vellum_cli/__init__.py,sha256=E2_T4MuUkfobYqla03ci2tRWQ7ZsaZA6wU340OCWRJ4,2788
4
4
  vellum_cli/aliased_group.py,sha256=ugW498j0yv4ALJ8vS9MsO7ctDW7Jlir9j6nE_uHAP8c,3363
5
5
  vellum_cli/config.py,sha256=urqMGQUkTntzdx-JV0P32FZVbqRZqgI-yFVmGPVblNI,3613
6
6
  vellum_cli/image_push.py,sha256=lCQhkQu-IlIMHNSynmEl5KUzO_dHW27NTAFWnyvPpcs,4419
7
7
  vellum_cli/logger.py,sha256=PuRFa0WCh4sAGFS5aqWB0QIYpS6nBWwPJrIXpWxugV4,1022
8
- vellum_cli/pull.py,sha256=op8HQmtiKa4TlrgEvhLiIac0Zhal6LETW22rhSkNHGE,3483
8
+ vellum_cli/pull.py,sha256=UApkIEq5BVq8Si_ZePyv5MMFUAspFetpec5Ix88WFOQ,3866
9
9
  vellum_cli/push.py,sha256=HhXHqLvWKf3CUZJ3yIm-KeoBkgk73EXqVtGgWYcBcVk,5089
10
10
  vellum_cli/tests/test_config.py,sha256=uvKGDc8BoVyT9_H0Z-g8469zVxomn6Oi3Zj-vK7O_wU,2631
11
- vellum_cli/tests/test_pull.py,sha256=24sHYWNViS-G_UHmPC_-KXb6l3OOs2AiDGv2kKp4AHY,5815
11
+ vellum_cli/tests/test_pull.py,sha256=gIkbpd4l_yUmIoW8k3wrTpp6h7OFbB0KXdijIjAgffU,7416
12
12
  vellum_ee/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  vellum_ee/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  vellum_ee/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  vellum_ee/workflows/display/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  vellum_ee/workflows/display/base.py,sha256=yYH86aTPfOy7Zbzj9YBzU-yLUX3GBHVNxKqJFy7_wxk,1797
17
17
  vellum_ee/workflows/display/nodes/__init__.py,sha256=5XOcZJXYUgaLS55QgRJzyQ_W1tpeprjnYAeYVezqoGw,160
18
- vellum_ee/workflows/display/nodes/base_node_display.py,sha256=0ee5qP5uF9WASIocwhZfEi8S2NmPdaGQLlG-kwPb9ZI,5942
18
+ vellum_ee/workflows/display/nodes/base_node_display.py,sha256=gmGGOXHydc158aS55JOHZtYvta6jj4ZCuue-9n8KvFY,5942
19
19
  vellum_ee/workflows/display/nodes/base_node_vellum_display.py,sha256=a62tpKcX0LdyZM2clwoGwpUfH3HMBbX1qiA0FFb_nk4,1649
20
20
  vellum_ee/workflows/display/nodes/get_node_display_class.py,sha256=A036wKuBjhtBGJKdkQSq4v1Rcm0cXHropJxKPuGWAsk,907
21
21
  vellum_ee/workflows/display/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
22
  vellum_ee/workflows/display/nodes/tests/test_base_node_display.py,sha256=x7UkKR22rnNGjeerHBczZ9_YsK8Us-YFOEbrLylvIxM,1054
23
23
  vellum_ee/workflows/display/nodes/types.py,sha256=St1BB6no528OyELGiyRabWao0GGw6mLhstQAvEACbGk,247
24
24
  vellum_ee/workflows/display/nodes/utils.py,sha256=sloya5TpXsnot1HURc9L51INwflRqUzHxRVnCS9Cd-4,973
25
- vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=jQgm0dsQAlxZ0tYR_cv5pX-6wHMPQfFwmhI3DQ29S9Y,1432
25
+ vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=BsGmoaVRcJ_dIiowKx6fFpehehmZO39G_Or7zvtjSAo,1504
26
26
  vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=awjKut2m7HoEmqewRfdR1dw8ufA0Q5mVG8V8jhaHlKw,8572
27
- vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=bAtSJpcKyJW-VLvBEr92lKPpdPH1L_IA02qg78U1uFA,3403
27
+ vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=MASV7u0X4eiS3SzRWeBcbWZ_YgNlwwg5cM2vaFWjpqk,3915
28
28
  vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=v9g263oEtyL6ejp5ZfLrVfrcqU9gZwzuUI4yBuOScbI,12983
29
+ vellum_ee/workflows/display/nodes/vellum/error_node.py,sha256=88ivEIHOHNITLAwuHQcCZ_4Mt4oUcPzs0vnwRweODcg,2136
29
30
  vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=2HsghUtPBOQ-4sN-2jDOnbEuIwcsilDKO3f2o1WlYgw,2897
30
31
  vellum_ee/workflows/display/nodes/vellum/guardrail_node.py,sha256=lr4d2uV3Lq8d22b5LCKbWMz_nU7Q0fvffcNQ7zx5Ygc,2163
31
32
  vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=0lX14iOxZhdKSXE6mzBAIw480nNJD_Sz4qo7WZAXYfQ,7391
@@ -46,6 +47,7 @@ vellum_ee/workflows/display/tests/workflow_serialization/__init__.py,sha256=47DE
46
47
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=bLdJ0VVwAPDRvwaJMiMf0fRCuIWvvuRjAxKzddGPFyA,16871
47
48
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=0McMPIPnIwE8iGh7fzFZL3dc6Q7NCQ_wUVFpl14YATo,22846
48
49
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=AOM1lN7_Y1wmorBpyF6Z2VVgrPUiFaePaGjauDluAsc,54187
50
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=JV9TYz9BPVojWQ8ypGLsSfl9LdntDcxlm9OilP4qv6o,6874
49
51
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=IfO5Hmr1W41X2IVq-i6pG7BuevBPZU_s6ASTNVVVkdg,8298
50
52
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=c97A2tFWnNUXi3T4RLsvf3nZkUTPiGSC6XD_x1-ZK_U,22270
51
53
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=Bx6tpFoW_7KrlsuzeEgXgQxa6CHJsQKwFZjilJsTivg,15451
@@ -71,7 +73,7 @@ vellum/client/README.md,sha256=JkCJjmMZl4jrPj46pkmL9dpK4gSzQQmP5I7z4aME4LY,4749
71
73
  vellum/client/__init__.py,sha256=o4m7iRZWEV8rP3GkdaztHAjNmjxjWERlarviFoHzuKI,110927
72
74
  vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
73
75
  vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
74
- vellum/client/core/client_wrapper.py,sha256=c9d8t0gg4sHCfhz528mHO5hti3rrAmFRPArvRV33Lkk,1890
76
+ vellum/client/core/client_wrapper.py,sha256=5Xcwu40B3NhlBCsQsIOUhnY8Fb2-Vz6T9wqGP6Cei34,1890
75
77
  vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
76
78
  vellum/client/core/file.py,sha256=X9IbmkZmB2bB_DpmZAO3crWdXagOakAyn6UCOCImCPg,2322
77
79
  vellum/client/core/http_client.py,sha256=R0pQpCppnEtxccGvXl4uJ76s7ro_65Fo_erlNNLp_AI,19228
@@ -305,7 +307,7 @@ vellum/client/types/json_input_request.py,sha256=x5sA-VXxF4QH-98xRcIKPZhsMVbnJNU
305
307
  vellum/client/types/json_variable_value.py,sha256=X7eBEWxuozfvIdqD5sIZ5L-L77Ou6IIsZaQVNXh5G2k,634
306
308
  vellum/client/types/json_vellum_value.py,sha256=8irlw6NkRRVafysfTc1Q5BFFhRrWJYzdwrDYTdJK4JY,689
307
309
  vellum/client/types/json_vellum_value_request.py,sha256=IUlkdwFGgBeLl9sCmAJhoaxomWiEMpWgRcLa_WnlK8g,696
308
- vellum/client/types/logical_operator.py,sha256=D8Chij23T00hdFAC4VUU0BcAPkLmx8SxwvxsEFYo918,524
310
+ vellum/client/types/logical_operator.py,sha256=a3a-5tP9vkZWqz2NqccZuJfB3R3fVpRnn97ejAbh1jM,567
309
311
  vellum/client/types/logprobs_enum.py,sha256=D_458cZX2CAb6dX_ovrQ6HARlJkYcZRadKwsi1Cr-JM,151
310
312
  vellum/client/types/map_node_result.py,sha256=e2YqEP-aKig2TbbZIlfn5LCeVEVhEJJBR7o7xTBKXaY,752
311
313
  vellum/client/types/map_node_result_data.py,sha256=3xJXC1JrS9lo3-3_u1S79sYwLxMknNntDyspN24vQzY,699
@@ -1181,7 +1183,7 @@ vellum/workflows/constants.py,sha256=Z0W4YlqfSlSgWC11PrVUPs6ZOBeIaQ78E_90J1hohiw
1181
1183
  vellum/workflows/descriptors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1182
1184
  vellum/workflows/descriptors/base.py,sha256=VyyXtGJ_Hc34AOC8XC_Rw_68L4WMgD5w9Y7r8t8My4E,13814
1183
1185
  vellum/workflows/descriptors/tests/test_utils.py,sha256=icwW-YkHD5oR6rn9IH6Rck9yYOsuwnocyJVHoeJFd74,2849
1184
- vellum/workflows/descriptors/utils.py,sha256=StqMFQzeeWS70ODqKOwwDucr3PUGl2XOr6C0sERLv8M,2990
1186
+ vellum/workflows/descriptors/utils.py,sha256=lO_dbr5g3PXpHPtVBkdguAK4-1qayZ7RXjl3BgAhrMM,3795
1185
1187
  vellum/workflows/edges/__init__.py,sha256=wSkmAnz9xyi4vZwtDbKxwlplt2skD7n3NsxkvR_pUus,50
1186
1188
  vellum/workflows/edges/edge.py,sha256=N0SnY3gKVuxImPAdCbPMPlHJIXbkQ3fwq_LbJRvVMFc,677
1187
1189
  vellum/workflows/emitters/__init__.py,sha256=YyOgaoLtVW8eFNEWODzCYb0HzL0PoSeNRf4diJ1Y0dk,80
@@ -1190,13 +1192,12 @@ vellum/workflows/environment/__init__.py,sha256=wGHslgSEZ7Octe4C-hNtl84EFelNimgm
1190
1192
  vellum/workflows/environment/environment.py,sha256=IwcVSwA51jW1JTN_MAN22UbeAtZhiAVa_JRV4rmpAAs,219
1191
1193
  vellum/workflows/errors/__init__.py,sha256=BRyo4hKP2ElS4k1YDu8VdY2VhUZjILtHn2sPFf_d7U0,105
1192
1194
  vellum/workflows/errors/types.py,sha256=YQy6na_iBkqxl9GHKOcin44m8DMRG5KP9oLV1Lpal1M,541
1193
- vellum/workflows/events/__init__.py,sha256=vLwQuykMmbv0izdUvsamouRQKbmKX_r9Poo77jd404w,821
1195
+ vellum/workflows/events/__init__.py,sha256=6pxxceJo2dcaRkWtkDAYlUQZ-PHBQSZytIoyuUK48Qw,759
1194
1196
  vellum/workflows/events/node.py,sha256=YQVWrE8LD5IxRTz_e0-0bXMhk3RZ75ZKTvAJZqH8dP0,5270
1195
1197
  vellum/workflows/events/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1196
- vellum/workflows/events/tests/test_event.py,sha256=BbAeTohMdfAdpBea9fbi5nDXX6UQ7xASMv9jNuwOmDU,12704
1197
- vellum/workflows/events/types.py,sha256=2MDqlhBMwFWKso423IGH9ZdsPnmBWGGOIBceW568pnk,2865
1198
- vellum/workflows/events/utils.py,sha256=OwtE8dHOCX01jvLyoS1l18tYQ4ob0YJcUhUorKWLJh0,232
1199
- vellum/workflows/events/workflow.py,sha256=kPjZTh5hzCsSrVKLkXQNwzxhnUp3X4GkFA5veGatGlQ,4353
1198
+ vellum/workflows/events/tests/test_event.py,sha256=IfDAG3CPkLRilWt_guIOCPUZglBgKMlrgdOL0gQo_9Q,12729
1199
+ vellum/workflows/events/types.py,sha256=xM6xzpgbA8lAgc6IXP2oCmfnUZhsRzku14TN3PuM-oc,2868
1200
+ vellum/workflows/events/workflow.py,sha256=5KpBMPyDcXHiiC34DJj4efVYJQtrUX31h0sCRLuzmuc,4601
1200
1201
  vellum/workflows/exceptions.py,sha256=Dc7mxstsaMDRmS91QEOiZCbZ1ZIRacnm0l5lQmC6WkA,401
1201
1202
  vellum/workflows/expressions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1202
1203
  vellum/workflows/expressions/accessor.py,sha256=OFvAHAVABr-k7GceIhtzIurV4OuV_yHft7JPRsq87Es,1472
@@ -1234,7 +1235,7 @@ vellum/workflows/inputs/base.py,sha256=1kMgr0WqCYdWUqgFvgSoAMw2067FAlgwhGXLgbIOr
1234
1235
  vellum/workflows/logging.py,sha256=_a217XogktV4Ncz6xKFz7WfYmZAzkfVRVuC0rWob8ls,437
1235
1236
  vellum/workflows/nodes/__init__.py,sha256=aVdQVv7Y3Ro3JlqXGpxwaU2zrI06plDHD2aumH5WUIs,1157
1236
1237
  vellum/workflows/nodes/bases/__init__.py,sha256=Ll1Ti6t3e_HKtGLsQTHAJevDmfo0QtfgPZUZ9FCRduI,140
1237
- vellum/workflows/nodes/bases/base.py,sha256=2WP30q6OtEK5nA15NljZnyoIPko3fYpf_sStvzNTsrE,13628
1238
+ vellum/workflows/nodes/bases/base.py,sha256=n8OveMW8OakoQ2xhgXrifHB5MfUwOonCi-eVpnIb7yQ,14696
1238
1239
  vellum/workflows/nodes/bases/base_subworkflow_node/__init__.py,sha256=0nkHQiFC4IpA1ZGx60XG0BLUWF6hwUpgqmS3ZrlFGhg,80
1239
1240
  vellum/workflows/nodes/bases/base_subworkflow_node/node.py,sha256=vC0gUBQewAUNtP3i2G0-LUpE_kY-r_ijBD_tS1XkQ1E,383
1240
1241
  vellum/workflows/nodes/bases/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1243,7 +1244,7 @@ vellum/workflows/nodes/core/__init__.py,sha256=5zDMCmyt1v0HTJzlUBwq3U9L825yZGZhT
1243
1244
  vellum/workflows/nodes/core/error_node/__init__.py,sha256=g7RRnlHhqu4qByfLjBwCunmgGA8dI5gNsjS3h6TwlSI,60
1244
1245
  vellum/workflows/nodes/core/error_node/node.py,sha256=hqBPHoLnhNrK9ITIaEzpnk47XYDbG6cmObz7oe78Ceg,944
1245
1246
  vellum/workflows/nodes/core/inline_subworkflow_node/__init__.py,sha256=nKNEH1QTl-1PcvmYoqSWEl0-t6gAur8GLTXHzklRQfM,84
1246
- vellum/workflows/nodes/core/inline_subworkflow_node/node.py,sha256=hXYdhY_4cJVzCDBeFynFflRisgS4nBeFsuz3sFzrMGI,3002
1247
+ vellum/workflows/nodes/core/inline_subworkflow_node/node.py,sha256=mWugLOYnVmji-dSf8Rfizs_XKKfKWSskMbn6TRMDbaY,3063
1247
1248
  vellum/workflows/nodes/core/map_node/__init__.py,sha256=MXpZYmGfhsMJHqqlpd64WiJRtbAtAMQz-_3fCU_cLV0,56
1248
1249
  vellum/workflows/nodes/core/map_node/node.py,sha256=aPhV3niv_jWSwrZ2CwiRg0CDOM-09Fa6QqOPYNJMgRc,6206
1249
1250
  vellum/workflows/nodes/core/map_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1255,16 +1256,16 @@ vellum/workflows/nodes/core/retry_node/tests/test_node.py,sha256=zANiu9-d-uIOP9t
1255
1256
  vellum/workflows/nodes/core/templating_node/__init__.py,sha256=GmyuYo81_A1_Bz6id69ozVFS6FKiuDsZTiA3I6MaL2U,70
1256
1257
  vellum/workflows/nodes/core/templating_node/custom_filters.py,sha256=Q0DahYRHP4KfaUXDt9XxN-DFLBrAxlv90yaVqxScoUw,264
1257
1258
  vellum/workflows/nodes/core/templating_node/exceptions.py,sha256=cDp140PP4OnInW4qAvg3KqiSiF70C71UyEAKRBR1Abo,46
1258
- vellum/workflows/nodes/core/templating_node/node.py,sha256=SU8zCVLz1Qq4bXoECHssECQBmUwxdeQgFMo7x1nv5Ts,4364
1259
+ vellum/workflows/nodes/core/templating_node/node.py,sha256=uxdOk_vyb5ONoOWG4xMDo3_eAZS_JxnZi-cMlq2Fc4k,4499
1259
1260
  vellum/workflows/nodes/core/templating_node/render.py,sha256=OpJp0NAH6qcEL6K9lxR0qjpFb75TYNttJR5iCos8tmg,1792
1260
1261
  vellum/workflows/nodes/core/templating_node/tests/test_templating_node.py,sha256=L6F3Gw9doguj1TSKmAns-mzXvoRuRivaCFe3mhjo13E,551
1261
1262
  vellum/workflows/nodes/core/try_node/__init__.py,sha256=JVD4DrldTIqFQQFrubs9KtWCCc0YCAc7Fzol5ZWIWeM,56
1262
- vellum/workflows/nodes/core/try_node/node.py,sha256=ZP7Suh025siA8T4D_1niL_-5lwSHXvY72-cj2x8S2U8,5813
1263
+ vellum/workflows/nodes/core/try_node/node.py,sha256=_mpmppZ6XUr_2zsAfhrsL0wbOhq8Ayipj_q9n52oBbI,6562
1263
1264
  vellum/workflows/nodes/core/try_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1264
- vellum/workflows/nodes/core/try_node/tests/test_node.py,sha256=u06GmVGln5lg-65YYFAmjlKwxuXbP8bKA8Qf_Zbq7ak,3764
1265
+ vellum/workflows/nodes/core/try_node/tests/test_node.py,sha256=NyyCkZGoG2eTzdewCpnnYjjUrRLDF31cGmJBGbvEOIw,4075
1265
1266
  vellum/workflows/nodes/displayable/__init__.py,sha256=6F_4DlSwvHuilWnIalp8iDjjDXl0Nmz4QzJV2PYe5RI,1023
1266
1267
  vellum/workflows/nodes/displayable/api_node/__init__.py,sha256=MoxdQSnidIj1Nf_d-hTxlOxcZXaZnsWFDbE-PkTK24o,56
1267
- vellum/workflows/nodes/displayable/api_node/node.py,sha256=-m93_KqwaWxbtbNQDWnLZZ-TSHCwd4ir2V542zovaZU,2043
1268
+ vellum/workflows/nodes/displayable/api_node/node.py,sha256=mnoncJtxo5YhuFCR3_axpvCqrGQKLShvfU6xJO7Fa8I,2047
1268
1269
  vellum/workflows/nodes/displayable/bases/__init__.py,sha256=0mWIx3qUrzllV7jqt7wN03vWGMuI1WrrLZeMLT2Cl2c,304
1269
1270
  vellum/workflows/nodes/displayable/bases/api_node/__init__.py,sha256=1jwx4WC358CLA1jgzl_UD-rZmdMm2v9Mps39ndwCD7U,64
1270
1271
  vellum/workflows/nodes/displayable/bases/api_node/node.py,sha256=YQNoO5xgjd44EzOTe0EVAxWgMLoaWGx_68fxgoEBqto,2487
@@ -1273,15 +1274,15 @@ vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=et_cMMc
1273
1274
  vellum/workflows/nodes/displayable/bases/inline_prompt_node/__init__.py,sha256=Hl35IAoepRpE-j4cALaXVJIYTYOF3qszyVbxTj4kS1s,82
1274
1275
  vellum/workflows/nodes/displayable/bases/inline_prompt_node/constants.py,sha256=fnjiRWLoRlC4Puo5oQcpZD5Hd-EesxsAo9l5tGAkpZQ,270
1275
1276
  vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=vbl6LRCrmlxFURcFGFMAEBJjgNGPB5q9AnQ8UITxYuI,4869
1276
- vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=JjNMiAFgOupUo5EUeHaryG74SCjEECxBZiS8cMECR_c,4378
1277
+ vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=KsKU9SNgjd1feiylSNS33DE0jKsJbYsaepF5wpCUzRU,4440
1277
1278
  vellum/workflows/nodes/displayable/bases/search_node.py,sha256=z8IQg-J46AbRMgFi92M08A220Wf7gU0xE3634ii3T1E,3565
1278
1279
  vellum/workflows/nodes/displayable/code_execution_node/__init__.py,sha256=0FLWMMktpzSnmBMizQglBpcPrP80fzVsoJwJgf822Cg,76
1279
- vellum/workflows/nodes/displayable/code_execution_node/node.py,sha256=8yPoA8yCvk4TODot5Ou09wbonkCfqvPYFc5cOHbwP10,8078
1280
+ vellum/workflows/nodes/displayable/code_execution_node/node.py,sha256=zK-gxWmox8QZ84J11faUmasRozNKDIBv_86Gjq8uj7M,7975
1280
1281
  vellum/workflows/nodes/displayable/code_execution_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1281
1282
  vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1282
1283
  vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/main.py,sha256=5QsbmkzSlSbcbWTG_JmIqcP-JNJzOPTKxGzdHos19W4,79
1283
1284
  vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py,sha256=pvkvMOIL94vDP3KUrQh0OF1lELjEFJ6HIDEz5kUqbzo,3377
1284
- vellum/workflows/nodes/displayable/code_execution_node/utils.py,sha256=R0gVJVwn2g3caDr25LBj_mj9JUIbORSS-88MQkvSWQU,215
1285
+ vellum/workflows/nodes/displayable/code_execution_node/utils.py,sha256=JAoa0AUIDUHKuNVlsxlTD0RT5rX9K_7GAEACGz4XJas,613
1285
1286
  vellum/workflows/nodes/displayable/conditional_node/__init__.py,sha256=AS_EIqFdU1F9t8aLmbZU-rLh9ry6LCJ0uj0D8F0L5Uw,72
1286
1287
  vellum/workflows/nodes/displayable/conditional_node/node.py,sha256=SWfsEQ7G_y3yEnxzMhjtjHF4xZvFdFTds77LrFZHGUU,1020
1287
1288
  vellum/workflows/nodes/displayable/final_output_node/__init__.py,sha256=G7VXM4OWpubvSJtVkGmMNeqgb9GkM7qZT838eL18XU4,72
@@ -1289,21 +1290,21 @@ vellum/workflows/nodes/displayable/final_output_node/node.py,sha256=iH3ZPOstPku_
1289
1290
  vellum/workflows/nodes/displayable/guardrail_node/__init__.py,sha256=Ab5eXmOoBhyV4dMWdzh32HLUmnPIBEK_zFCT38C4Fng,68
1290
1291
  vellum/workflows/nodes/displayable/guardrail_node/node.py,sha256=vctOgn1gUYGIClknGciUjmDRFKlcEbIRZYvzgBaMiVo,3918
1291
1292
  vellum/workflows/nodes/displayable/inline_prompt_node/__init__.py,sha256=gSUOoEZLlrx35-tQhSAd3An8WDwBqyiQh-sIebLU9wU,74
1292
- vellum/workflows/nodes/displayable/inline_prompt_node/node.py,sha256=gZSiATdEwka07GkBm1F_CbqZLXNYdFAvFgT0vE2w1zA,1854
1293
+ vellum/workflows/nodes/displayable/inline_prompt_node/node.py,sha256=M4pUl2RO0a_094oCrtCmgo0rr_wKT_F3KN4y1eDFm4Y,2112
1293
1294
  vellum/workflows/nodes/displayable/merge_node/__init__.py,sha256=J8IC08dSH7P76wKlNuxe1sn7toNGtSQdFirUbtPDEs0,60
1294
1295
  vellum/workflows/nodes/displayable/merge_node/node.py,sha256=ZyPvcTgfPOneOm5Dc2kUOoPkwNJqwRPZSj232akXynA,324
1295
1296
  vellum/workflows/nodes/displayable/note_node/__init__.py,sha256=KWA3P4fyYJ-fOTky8qNGlcOotQ-HeHJ9AjZt6mRQmCE,58
1296
1297
  vellum/workflows/nodes/displayable/note_node/node.py,sha256=8rwP7RS1OOyQJ-ZuZBXTCtT2ZW8J6eGD59iKmq_pB24,258
1297
1298
  vellum/workflows/nodes/displayable/prompt_deployment_node/__init__.py,sha256=krX1Hds-TSVYZsx0wJFX4wsAKkEFYOX1ifwRGiIM-EA,82
1298
- vellum/workflows/nodes/displayable/prompt_deployment_node/node.py,sha256=zEgOWgahPr-Jozd97xEqhX3ZelcHcMuKPMiOFb1igXE,2321
1299
+ vellum/workflows/nodes/displayable/prompt_deployment_node/node.py,sha256=1GzSTUFiqjly7Uz-xSsEI5a4NZNv8ZEI_1C2oYwQKEg,2513
1299
1300
  vellum/workflows/nodes/displayable/search_node/__init__.py,sha256=hpBpvbrDYf43DElRZFLzieSn8weXiwNiiNOJurERQbs,62
1300
1301
  vellum/workflows/nodes/displayable/search_node/node.py,sha256=k7_S5yWFGZrIV1R5BsFIFSkOvmnbJK39pNmZD8XLCX4,1310
1301
1302
  vellum/workflows/nodes/displayable/subworkflow_deployment_node/__init__.py,sha256=9yYM6001YZeqI1VOk1QuEM_yrffk_EdsO7qaPzINKds,92
1302
- vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=HjKaQ8QaqmdEcwOIg2DoWk__l9cMpR4tYnZ51WQDThk,6714
1303
+ vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=JcMRX0dFYj3OETzkB7u3J6VFfRftYygHlFvrY266GYc,6776
1303
1304
  vellum/workflows/nodes/displayable/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1304
1305
  vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py,sha256=UwNCIrq2gDpObcosrpiIHFdHZLWarmlS7ez8GanIBDc,4649
1305
1306
  vellum/workflows/nodes/displayable/tests/test_search_node_wth_text_output.py,sha256=AZtodUoX_Fl_ZXDinutAxlsDsfcxEYS0nFL0mcBylW8,6955
1306
- vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py,sha256=Ee2_1bvWycaVNzKGLsxAcu_3HNvTM_DiwDAeF20ZgBk,2497
1307
+ vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py,sha256=t4ctc6MCwtvOOV4MG-xm-1w1A-ik0--_1es6yJ1qklU,2510
1307
1308
  vellum/workflows/nodes/utils.py,sha256=zY0b5WjJtGwVPPLY3ffHUdRREPvyoNwmJDigz5jQRAI,812
1308
1309
  vellum/workflows/outputs/__init__.py,sha256=AyZ4pRh_ACQIGvkf0byJO46EDnSix1ZCAXfvh-ms1QE,94
1309
1310
  vellum/workflows/outputs/base.py,sha256=aOll71CH_g1RaVO1wl038BqpWH70cD3XXSRxzH0YoRA,8002
@@ -1325,17 +1326,17 @@ vellum/workflows/references/workflow_input.py,sha256=epspVRZ9n_nxoTxI5Am3GDd2fpU
1325
1326
  vellum/workflows/resolvers/__init__.py,sha256=eH6hTvZO4IciDaf_cf7aM2vs-DkBDyJPycOQevJxQnI,82
1326
1327
  vellum/workflows/resolvers/base.py,sha256=WHra9LRtlTuB1jmuNqkfVE2JUgB61Cyntn8f0b0WZg4,411
1327
1328
  vellum/workflows/runner/__init__.py,sha256=i1iG5sAhtpdsrlvwgH6B-m49JsINkiWyPWs8vyT-bqM,72
1328
- vellum/workflows/runner/runner.py,sha256=MavIvMsEJkFxgZb4sd0-vLFWnVBfZIn4AsfVJcqn1rY,24504
1329
+ vellum/workflows/runner/runner.py,sha256=EGelAr8bWGjXLBWyjMLJSF55rI0kwdDFuZudprmg8T4,28226
1329
1330
  vellum/workflows/runner/types.py,sha256=UQIGqOuCDgxEQpoJr4ut3wAnAjp4scDWhNhEhYFyLrw,466
1330
1331
  vellum/workflows/state/__init__.py,sha256=yUUdR-_Vl7UiixNDYQZ-GEM_kJI9dnOia75TtuNEsnE,60
1331
- vellum/workflows/state/base.py,sha256=gm4pun9BzYaZbW8I1j7EriUIlAzqQkKT3IBbXPh3FkA,12663
1332
- vellum/workflows/state/context.py,sha256=tpJoOgmx7bmeNrQeOtavOfqTwBbtJCNDqjJ6ssh4gh8,464
1332
+ vellum/workflows/state/base.py,sha256=ZtbQReKY9P3HRuCFV2338iI6rhJVVoBGgPGKQFysvT0,14514
1333
+ vellum/workflows/state/context.py,sha256=oXiEdNsWJi1coRB85IreTgUeR6_CrWWBXndtLff9S7M,1272
1333
1334
  vellum/workflows/state/encoder.py,sha256=kRrqwD0vFCiSRZR3rg8Sjkh8sDEerQQhlvmdSYQAOl8,1741
1334
1335
  vellum/workflows/state/store.py,sha256=VYGBQgN1bpd1as5eGiouV_7scg8QsRs4_1aqZAGIsRQ,793
1335
1336
  vellum/workflows/state/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1336
1337
  vellum/workflows/state/tests/test_state.py,sha256=BQjcdREIK1MPuGhivRUgpynVJLftjEpH9RG3cRKxQEY,3310
1337
- vellum/workflows/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1338
- vellum/workflows/types/core.py,sha256=llsHFE3XKnVEk_pYoK0s9WUdeninSU5Kmoi7dU4GX0c,1804
1338
+ vellum/workflows/types/__init__.py,sha256=KxUTMBGzuRCfiMqzzsykOeVvrrkaZmTTo1a7SLu8gRM,68
1339
+ vellum/workflows/types/core.py,sha256=CV_9YgZN8QorFIn18uCwxHxv8bWoYXNnLUB6JyYlf4A,1845
1339
1340
  vellum/workflows/types/generics.py,sha256=ZkfoRhWs042i5IjA99v2wIhmh1u-Wieo3LzosgGWJVk,600
1340
1341
  vellum/workflows/types/stack.py,sha256=RDSGLkcV612ge8UuAH9TZiEGXxJt0Av2-H5rfzrTVVI,1014
1341
1342
  vellum/workflows/types/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1349,9 +1350,10 @@ vellum/workflows/utils/tests/test_vellum_variables.py,sha256=lsYgQV4Iq4ECoVdBNQH
1349
1350
  vellum/workflows/utils/vellum_variables.py,sha256=wbYejKwjy23ITDRfdGW4d181buvCbZityEp5UTJPl28,3123
1350
1351
  vellum/workflows/vellum_client.py,sha256=ODrq_TSl-drX2aezXegf7pizpWDVJuTXH-j6528t75s,683
1351
1352
  vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
1352
- vellum/workflows/workflows/base.py,sha256=QxIm0zCic8P-y0NNLdqgC1YKTu-3TmMJ-wH1nUylguA,13689
1353
- vellum_ai-0.10.7.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1354
- vellum_ai-0.10.7.dist-info/METADATA,sha256=ORDcBMHiWjSs9HCgB8N2aas_2KPUBSDX96vbojp8F6w,5128
1355
- vellum_ai-0.10.7.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
1356
- vellum_ai-0.10.7.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1357
- vellum_ai-0.10.7.dist-info/RECORD,,
1353
+ vellum/workflows/workflows/base.py,sha256=7GV9ApiOW-nXwb5v1MGKAa_Mh2XDQD2ZD0qjFehFIxQ,14334
1354
+ vellum/workflows/workflows/event_filters.py,sha256=o1IPA6nS5Yw5mPIpTdWVO870Swl3N4UQ5ITzkVlraqY,1885
1355
+ vellum_ai-0.10.9.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1356
+ vellum_ai-0.10.9.dist-info/METADATA,sha256=5w-XqUtc-2tPSnumluxaUZNh62U99RIVY2Ne7_L9oZ0,5128
1357
+ vellum_ai-0.10.9.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
1358
+ vellum_ai-0.10.9.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1359
+ vellum_ai-0.10.9.dist-info/RECORD,,
vellum_cli/__init__.py CHANGED
@@ -42,11 +42,30 @@ def push(
42
42
 
43
43
  @main.command()
44
44
  @click.argument("module", required=False)
45
- @click.option("--legacy-module", is_flag=True, help="Pull the workflow as a legacy module")
46
- @click.option("--include-json", is_flag=True, help="Include the JSON representation of the Workflow in the pull response. Should only be used for debugging purposes.")
47
- def pull(module: Optional[str], legacy_module: Optional[bool], include_json: Optional[bool]) -> None:
45
+ @click.option(
46
+ "--include-json",
47
+ is_flag=True,
48
+ help="Include the JSON representation of the Workflow in the pull response. Should only be used for debugging purposes.",
49
+ )
50
+ @click.option("--workflow-sandbox-id", type=str, help="Pull the Workflow from a specific Sandbox ID")
51
+ @click.option(
52
+ "--exclude-code",
53
+ is_flag=True,
54
+ help="Exclude the code definition of the Workflow from the pull response. Should only be used for debugging purposes.",
55
+ )
56
+ def pull(
57
+ module: Optional[str],
58
+ include_json: Optional[bool],
59
+ workflow_sandbox_id: Optional[str],
60
+ exclude_code: Optional[bool],
61
+ ) -> None:
48
62
  """Pull Workflow from Vellum"""
49
- pull_command(module, legacy_module, include_json)
63
+ pull_command(
64
+ module=module,
65
+ include_json=include_json,
66
+ workflow_sandbox_id=workflow_sandbox_id,
67
+ exclude_code=exclude_code,
68
+ )
50
69
 
51
70
 
52
71
  @main.group(aliases=["images", "image"])