vellum-ai 0.10.7__py3-none-any.whl → 0.10.9__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
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"])