vellum-ai 0.11.9__py3-none-any.whl → 0.12.0__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- vellum/client/core/client_wrapper.py +1 -1
- vellum/workflows/descriptors/base.py +2 -2
- vellum/workflows/descriptors/tests/test_utils.py +4 -4
- vellum/workflows/errors/__init__.py +3 -3
- vellum/workflows/errors/types.py +46 -3
- vellum/workflows/events/node.py +3 -3
- vellum/workflows/events/tests/test_event.py +3 -3
- vellum/workflows/events/workflow.py +3 -3
- vellum/workflows/exceptions.py +8 -4
- vellum/workflows/nodes/bases/base.py +9 -2
- vellum/workflows/nodes/bases/tests/test_base_node.py +13 -0
- vellum/workflows/nodes/core/error_node/node.py +9 -5
- vellum/workflows/nodes/core/inline_subworkflow_node/node.py +3 -13
- vellum/workflows/nodes/core/map_node/node.py +2 -2
- vellum/workflows/nodes/core/retry_node/node.py +5 -5
- vellum/workflows/nodes/core/retry_node/tests/test_node.py +6 -6
- vellum/workflows/nodes/core/templating_node/node.py +2 -2
- vellum/workflows/nodes/core/try_node/node.py +7 -7
- vellum/workflows/nodes/core/try_node/tests/test_node.py +9 -7
- vellum/workflows/nodes/displayable/bases/api_node/node.py +3 -3
- vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py +4 -12
- vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +2 -2
- vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py +2 -2
- vellum/workflows/nodes/displayable/bases/search_node.py +3 -3
- vellum/workflows/nodes/displayable/code_execution_node/node.py +21 -5
- vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py +141 -0
- vellum/workflows/nodes/displayable/guardrail_node/node.py +3 -3
- vellum/workflows/nodes/displayable/inline_prompt_node/node.py +3 -3
- vellum/workflows/nodes/displayable/prompt_deployment_node/node.py +3 -3
- vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py +7 -14
- vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py +4 -4
- vellum/workflows/nodes/utils.py +5 -9
- vellum/workflows/references/external_input.py +2 -2
- vellum/workflows/references/node.py +2 -2
- vellum/workflows/references/state_value.py +2 -2
- vellum/workflows/references/workflow_input.py +2 -2
- vellum/workflows/runner/runner.py +15 -15
- {vellum_ee/workflows/display → vellum/workflows}/utils/tests/test_uuids.py +1 -1
- vellum/workflows/workflows/base.py +7 -7
- {vellum_ai-0.11.9.dist-info → vellum_ai-0.12.0.dist-info}/METADATA +1 -1
- {vellum_ai-0.11.9.dist-info → vellum_ai-0.12.0.dist-info}/RECORD +61 -62
- {vellum_ai-0.11.9.dist-info → vellum_ai-0.12.0.dist-info}/WHEEL +1 -1
- vellum_ee/workflows/display/nodes/base_node_display.py +50 -21
- vellum_ee/workflows/display/nodes/base_node_vellum_display.py +10 -1
- vellum_ee/workflows/display/nodes/get_node_display_class.py +10 -1
- vellum_ee/workflows/display/nodes/tests/test_base_node_display.py +5 -4
- vellum_ee/workflows/display/nodes/vellum/code_execution_node.py +13 -3
- vellum_ee/workflows/display/nodes/vellum/conditional_node.py +1 -1
- vellum_ee/workflows/display/nodes/vellum/final_output_node.py +1 -1
- vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py +1 -1
- vellum_ee/workflows/display/nodes/vellum/merge_node.py +4 -4
- vellum_ee/workflows/display/nodes/vellum/search_node.py +1 -1
- vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py +5 -1
- vellum_ee/workflows/display/nodes/vellum/try_node.py +12 -6
- vellum_ee/workflows/display/nodes/vellum/utils.py +1 -1
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py +269 -85
- vellum_ee/workflows/display/workflows/base_workflow_display.py +2 -2
- vellum_ee/workflows/display/workflows/vellum_workflow_display.py +2 -6
- vellum_ee/workflows/display/utils/tests/__init__.py +0 -0
- {vellum_ee/workflows/display → vellum/workflows}/utils/uuids.py +0 -0
- {vellum_ai-0.11.9.dist-info → vellum_ai-0.12.0.dist-info}/LICENSE +0 -0
- {vellum_ai-0.11.9.dist-info → vellum_ai-0.12.0.dist-info}/entry_points.txt +0 -0
@@ -10,7 +10,7 @@ from vellum.workflows.constants import UNDEF
|
|
10
10
|
from vellum.workflows.context import execution_context, get_parent_context
|
11
11
|
from vellum.workflows.descriptors.base import BaseDescriptor
|
12
12
|
from vellum.workflows.edges.edge import Edge
|
13
|
-
from vellum.workflows.errors import
|
13
|
+
from vellum.workflows.errors import WorkflowError, WorkflowErrorCode
|
14
14
|
from vellum.workflows.events import (
|
15
15
|
NodeExecutionFulfilledEvent,
|
16
16
|
NodeExecutionInitiatedEvent,
|
@@ -184,14 +184,14 @@ class WorkflowRunner(Generic[StateType]):
|
|
184
184
|
if not isinstance(node_run_response, (BaseOutputs, Iterator)):
|
185
185
|
raise NodeException(
|
186
186
|
message=f"Node {node.__class__.__name__} did not return a valid node run response",
|
187
|
-
code=
|
187
|
+
code=WorkflowErrorCode.INVALID_OUTPUTS,
|
188
188
|
)
|
189
189
|
|
190
190
|
if isinstance(node_run_response, BaseOutputs):
|
191
191
|
if not isinstance(node_run_response, node.Outputs):
|
192
192
|
raise NodeException(
|
193
193
|
message=f"Node {node.__class__.__name__} did not return a valid outputs object",
|
194
|
-
code=
|
194
|
+
code=WorkflowErrorCode.INVALID_OUTPUTS,
|
195
195
|
)
|
196
196
|
|
197
197
|
outputs = node_run_response
|
@@ -312,9 +312,9 @@ class WorkflowRunner(Generic[StateType]):
|
|
312
312
|
span_id=span_id,
|
313
313
|
body=NodeExecutionRejectedBody(
|
314
314
|
node_definition=node.__class__,
|
315
|
-
error=
|
315
|
+
error=WorkflowError(
|
316
316
|
message=str(e),
|
317
|
-
code=
|
317
|
+
code=WorkflowErrorCode.INTERNAL_ERROR,
|
318
318
|
),
|
319
319
|
),
|
320
320
|
parent=parent_context,
|
@@ -375,7 +375,7 @@ class WorkflowRunner(Generic[StateType]):
|
|
375
375
|
)
|
376
376
|
worker_thread.start()
|
377
377
|
|
378
|
-
def _handle_work_item_event(self, event: WorkflowEvent) -> Optional[
|
378
|
+
def _handle_work_item_event(self, event: WorkflowEvent) -> Optional[WorkflowError]:
|
379
379
|
node = self._active_nodes_by_execution_id.get(event.span_id)
|
380
380
|
if not node:
|
381
381
|
return None
|
@@ -449,7 +449,7 @@ class WorkflowRunner(Generic[StateType]):
|
|
449
449
|
parent=self._parent_context,
|
450
450
|
)
|
451
451
|
|
452
|
-
def _reject_workflow_event(self, error:
|
452
|
+
def _reject_workflow_event(self, error: WorkflowError) -> WorkflowExecutionRejectedEvent:
|
453
453
|
return WorkflowExecutionRejectedEvent(
|
454
454
|
trace_id=self._initial_state.meta.trace_id,
|
455
455
|
span_id=self._initial_state.meta.span_id,
|
@@ -486,9 +486,9 @@ class WorkflowRunner(Generic[StateType]):
|
|
486
486
|
if not self._entrypoints:
|
487
487
|
self._workflow_event_outer_queue.put(
|
488
488
|
self._reject_workflow_event(
|
489
|
-
|
489
|
+
WorkflowError(
|
490
490
|
message="No entrypoints defined",
|
491
|
-
code=
|
491
|
+
code=WorkflowErrorCode.INVALID_WORKFLOW,
|
492
492
|
)
|
493
493
|
)
|
494
494
|
)
|
@@ -515,12 +515,12 @@ class WorkflowRunner(Generic[StateType]):
|
|
515
515
|
logger.exception(err_message)
|
516
516
|
self._workflow_event_outer_queue.put(
|
517
517
|
self._reject_workflow_event(
|
518
|
-
|
518
|
+
WorkflowError(code=WorkflowErrorCode.INTERNAL_ERROR, message=err_message),
|
519
519
|
)
|
520
520
|
)
|
521
521
|
return
|
522
522
|
|
523
|
-
rejection_error: Optional[
|
523
|
+
rejection_error: Optional[WorkflowError] = None
|
524
524
|
|
525
525
|
while True:
|
526
526
|
if not self._active_nodes_by_execution_id:
|
@@ -602,8 +602,8 @@ class WorkflowRunner(Generic[StateType]):
|
|
602
602
|
self._cancel_signal.wait()
|
603
603
|
self._workflow_event_outer_queue.put(
|
604
604
|
self._reject_workflow_event(
|
605
|
-
|
606
|
-
code=
|
605
|
+
WorkflowError(
|
606
|
+
code=WorkflowErrorCode.WORKFLOW_CANCELLED,
|
607
607
|
message="Workflow run cancelled",
|
608
608
|
)
|
609
609
|
)
|
@@ -666,8 +666,8 @@ class WorkflowRunner(Generic[StateType]):
|
|
666
666
|
|
667
667
|
if not self._is_terminal_event(event):
|
668
668
|
yield self._reject_workflow_event(
|
669
|
-
|
670
|
-
code=
|
669
|
+
WorkflowError(
|
670
|
+
code=WorkflowErrorCode.INTERNAL_ERROR,
|
671
671
|
message="An unexpected error occurred while streaming Workflow events",
|
672
672
|
)
|
673
673
|
)
|
@@ -34,7 +34,7 @@ from typing import (
|
|
34
34
|
|
35
35
|
from vellum.workflows.edges import Edge
|
36
36
|
from vellum.workflows.emitters.base import BaseWorkflowEmitter
|
37
|
-
from vellum.workflows.errors import
|
37
|
+
from vellum.workflows.errors import WorkflowError, WorkflowErrorCode
|
38
38
|
from vellum.workflows.events.node import (
|
39
39
|
NodeExecutionFulfilledBody,
|
40
40
|
NodeExecutionFulfilledEvent,
|
@@ -234,8 +234,8 @@ class BaseWorkflow(Generic[WorkflowInputsType, StateType], metaclass=_BaseWorkfl
|
|
234
234
|
trace_id=uuid4(),
|
235
235
|
span_id=uuid4(),
|
236
236
|
body=WorkflowExecutionRejectedBody(
|
237
|
-
error=
|
238
|
-
code=
|
237
|
+
error=WorkflowError(
|
238
|
+
code=WorkflowErrorCode.INTERNAL_ERROR,
|
239
239
|
message="No events were emitted",
|
240
240
|
),
|
241
241
|
workflow_definition=self.__class__,
|
@@ -247,8 +247,8 @@ class BaseWorkflow(Generic[WorkflowInputsType, StateType], metaclass=_BaseWorkfl
|
|
247
247
|
trace_id=uuid4(),
|
248
248
|
span_id=uuid4(),
|
249
249
|
body=WorkflowExecutionRejectedBody(
|
250
|
-
error=
|
251
|
-
code=
|
250
|
+
error=WorkflowError(
|
251
|
+
code=WorkflowErrorCode.INTERNAL_ERROR,
|
252
252
|
message="Initiated event was never emitted",
|
253
253
|
),
|
254
254
|
workflow_definition=self.__class__,
|
@@ -267,8 +267,8 @@ class BaseWorkflow(Generic[WorkflowInputsType, StateType], metaclass=_BaseWorkfl
|
|
267
267
|
span_id=first_event.span_id,
|
268
268
|
body=WorkflowExecutionRejectedBody(
|
269
269
|
workflow_definition=self.__class__,
|
270
|
-
error=
|
271
|
-
code=
|
270
|
+
error=WorkflowError(
|
271
|
+
code=WorkflowErrorCode.INTERNAL_ERROR,
|
272
272
|
message=f"Unexpected last event name found: {last_event.name}",
|
273
273
|
),
|
274
274
|
),
|
@@ -19,38 +19,38 @@ vellum_ee/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
|
|
19
19
|
vellum_ee/workflows/display/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
20
20
|
vellum_ee/workflows/display/base.py,sha256=3ZFUYRNKL24fBqXhKpa_Dq2W1a-a86J20dmJYA3H2eY,1755
|
21
21
|
vellum_ee/workflows/display/nodes/__init__.py,sha256=5XOcZJXYUgaLS55QgRJzyQ_W1tpeprjnYAeYVezqoGw,160
|
22
|
-
vellum_ee/workflows/display/nodes/base_node_display.py,sha256=
|
23
|
-
vellum_ee/workflows/display/nodes/base_node_vellum_display.py,sha256=
|
24
|
-
vellum_ee/workflows/display/nodes/get_node_display_class.py,sha256=
|
22
|
+
vellum_ee/workflows/display/nodes/base_node_display.py,sha256=23PLqcpMe_mYkYdug9PDb6Br7o64Thx9-IhcviKGvGo,6662
|
23
|
+
vellum_ee/workflows/display/nodes/base_node_vellum_display.py,sha256=E7BFiDv7RdPt_CYhmlgc5ZoQo4JcSQKBGFsAQg0OaJ4,2113
|
24
|
+
vellum_ee/workflows/display/nodes/get_node_display_class.py,sha256=vyKeJAevAXvEAEtWeTEdBZXD3eJQYW_DEXLKVZ5KmYc,1325
|
25
25
|
vellum_ee/workflows/display/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
26
|
-
vellum_ee/workflows/display/nodes/tests/test_base_node_display.py,sha256=
|
26
|
+
vellum_ee/workflows/display/nodes/tests/test_base_node_display.py,sha256=QqR3Ly0RNrXwOeLdW5nERDFt0gRPf76n1bPES6o5UN4,1093
|
27
27
|
vellum_ee/workflows/display/nodes/types.py,sha256=St1BB6no528OyELGiyRabWao0GGw6mLhstQAvEACbGk,247
|
28
28
|
vellum_ee/workflows/display/nodes/utils.py,sha256=sloya5TpXsnot1HURc9L51INwflRqUzHxRVnCS9Cd-4,973
|
29
29
|
vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=nmPLj8vkbVCS46XQqmHq8Xj8Mr36wCK_vWf26A9KIkw,1505
|
30
30
|
vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=4SSQGecKWHuoGy5YIGJeOZVHGKwTs_8Y-gf3GvsHb0M,8506
|
31
|
-
vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=
|
32
|
-
vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=
|
31
|
+
vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=_sdLmmOa1ZqZQZXzw0GMoUpgnV1sdOfc_19LJCBS_Xc,4288
|
32
|
+
vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=9JjtXTpyC14X5e1ntue2BcDif-jJA-wyDBd3hE6_gv4,13282
|
33
33
|
vellum_ee/workflows/display/nodes/vellum/error_node.py,sha256=ygTjSjYDI4DtkxADWub5rhBnRWItMKWF6fezBrgpOKA,1979
|
34
|
-
vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=
|
34
|
+
vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=t5iJQVoRT5g-v2IiUb4kFYdvUVKch0zn27016pzDZoo,2761
|
35
35
|
vellum_ee/workflows/display/nodes/vellum/guardrail_node.py,sha256=3TJvHX_Uuf_gr94VkYc_zmNH8I5p71ChIeoAbJZ3ddY,2158
|
36
|
-
vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=
|
36
|
+
vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=aU_jZeV0CC3JkIo_LHSh7peLbJEqEaV4odrLPtqzRxI,7375
|
37
37
|
vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py,sha256=x5wiuWbRjxNcPGu8BoBEKHwPeqCpHE-vrGjAdM5TJOs,4721
|
38
38
|
vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=AqUlItgSZij12qRKguKVmDbbaLuDy3Cdom5uOlJPqrc,3640
|
39
|
-
vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=
|
39
|
+
vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=jzO63B9KiEAncnBqmz2ZTcxjmEHozMEe7WnfpcpsQYg,3195
|
40
40
|
vellum_ee/workflows/display/nodes/vellum/note_node.py,sha256=9VpC3h0RYOxJuRbjDwidBYlLKakkmlEnDMBh2C7lHcY,1107
|
41
41
|
vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=gLRkizwyw21-Z12IyDbdOJpXayiZZd4HWd6qgZQg8sc,3106
|
42
|
-
vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=
|
42
|
+
vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=I4_ENFWEhHUDYFUWF67-EyToCwmJynAXcbNpqw6Cpio,8681
|
43
43
|
vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=zOp4voBSgB3MR1R93wTOrsiiara_hxEAYFupLl_SvTA,2657
|
44
44
|
vellum_ee/workflows/display/nodes/vellum/templating_node.py,sha256=UNYxoE-89agE8ugK0aWg_uN61jPqlC2VSxWHk568sN4,3324
|
45
45
|
vellum_ee/workflows/display/nodes/vellum/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
46
|
-
vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py,sha256=
|
47
|
-
vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=
|
48
|
-
vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=
|
46
|
+
vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py,sha256=aJfQnIvlrRHVKgQid_gg6VQKkJyPgFnzbvWt9_t0Vz0,3860
|
47
|
+
vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=4k9DdjjCkZ_-4qynwg40IipT5Sq2WwgYFFE8WMnMdr0,2612
|
48
|
+
vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=3QsKS5Kht2Nod4A18T0bb4filK9AkyK5oImVlViK3l8,4643
|
49
49
|
vellum_ee/workflows/display/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
50
50
|
vellum_ee/workflows/display/tests/test_vellum_workflow_display.py,sha256=TEg3QbdE7rLbEhml9pMWmay--phsekGlfGVhTblxCGE,1727
|
51
51
|
vellum_ee/workflows/display/tests/workflow_serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
52
52
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=e__ae2yepB5vlgVT08sr1DDB8pYjax6VQLo5FtRk-nA,17934
|
53
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=
|
53
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=F822H2tM3Fvmc2PvunrVCRhtSKQLLpi5y2L1gyJKa78,31576
|
54
54
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=d6xWDvi-Uo1KcMHVj_e8TujKhTwMKXAlT8H3P2V0gQU,53693
|
55
55
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=MGwIwhCBCVYZmE_8Srts3fEs0BcRqXFFVbqiHiBQ55Q,6798
|
56
56
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=vA8cd7PJYhf949OUGeYP_moKtMogSyfHN2Z-qzNQLwM,8294
|
@@ -65,21 +65,18 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_ser
|
|
65
65
|
vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=BGCgJ3WWiYK5fWJp_Yz-aWQPli5sIKOhLTVYfG9Tpq8,9177
|
66
66
|
vellum_ee/workflows/display/types.py,sha256=FSPg3TO8iNE2gnl1vn-nsMfit2V6yeBXW0Igh089A9w,2011
|
67
67
|
vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
68
|
-
vellum_ee/workflows/display/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
69
|
-
vellum_ee/workflows/display/utils/tests/test_uuids.py,sha256=ItjROhaPns8_mlvD17LIBwZKvhe2l0dXEd5oL-JiY64,448
|
70
|
-
vellum_ee/workflows/display/utils/uuids.py,sha256=DFzPv9RCvsKhvdTEIQyfSek2A31D6S_QcmeLPbgrgTY,739
|
71
68
|
vellum_ee/workflows/display/utils/vellum.py,sha256=IlkKrfAAi4BV_HFnsdMFxNJC2-TrPM9ubVHv8ikmbSA,5110
|
72
69
|
vellum_ee/workflows/display/vellum.py,sha256=OSv0ZS50h1zJbunJ9TH7VEWFw-exXdK_ZsdzPxP9ROs,8814
|
73
70
|
vellum_ee/workflows/display/workflows/__init__.py,sha256=kapXsC67VJcgSuiBMa86FdePG5A9kMB5Pi4Uy1O2ob4,207
|
74
|
-
vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=
|
71
|
+
vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=ydAbFMzcY2LURINZbXYm9BAXZdIa3-7rQ86Kupo7qcA,12804
|
75
72
|
vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=AMxNnTm2z3LIR5rqxoCAfuy37F2FTuSRDVtKUoezO8M,1184
|
76
|
-
vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=
|
73
|
+
vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=CvxUFudijGW4M7vapm_qrNG4X36PZxzFh6n6qBE9E1Y,17134
|
77
74
|
vellum/__init__.py,sha256=QmGeEPXeFxgkZa849KKK3wH3Y641wyt00Rytfay6KiM,35520
|
78
75
|
vellum/client/README.md,sha256=JkCJjmMZl4jrPj46pkmL9dpK4gSzQQmP5I7z4aME4LY,4749
|
79
76
|
vellum/client/__init__.py,sha256=o4m7iRZWEV8rP3GkdaztHAjNmjxjWERlarviFoHzuKI,110927
|
80
77
|
vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
|
81
78
|
vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
|
82
|
-
vellum/client/core/client_wrapper.py,sha256=
|
79
|
+
vellum/client/core/client_wrapper.py,sha256=7B5-HJvBvBhn2oOykuU54mjzw4eFMHzaowkShcRVK4c,1890
|
83
80
|
vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
84
81
|
vellum/client/core/file.py,sha256=X9IbmkZmB2bB_DpmZAO3crWdXagOakAyn6UCOCImCPg,2322
|
85
82
|
vellum/client/core/http_client.py,sha256=R0pQpCppnEtxccGvXl4uJ76s7ro_65Fo_erlNNLp_AI,19228
|
@@ -1206,8 +1203,8 @@ vellum/workflows/__init__.py,sha256=CssPsbNvN6rDhoLuqpEv7MMKGa51vE6dvAh6U31Pcio,
|
|
1206
1203
|
vellum/workflows/constants.py,sha256=Z0W4YlqfSlSgWC11PrVUPs6ZOBeIaQ78E_90J1hohiw,789
|
1207
1204
|
vellum/workflows/context.py,sha256=R8qdsFbD_0p7B6PWnyvSrZ_aOgMtGw-_uk0P0UAmwLA,1230
|
1208
1205
|
vellum/workflows/descriptors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1209
|
-
vellum/workflows/descriptors/base.py,sha256=
|
1210
|
-
vellum/workflows/descriptors/tests/test_utils.py,sha256=
|
1206
|
+
vellum/workflows/descriptors/base.py,sha256=yLfr5qW5o7B2tLVvxEGeh-f6qiAQ735-9xrKOZ3HMc4,13830
|
1207
|
+
vellum/workflows/descriptors/tests/test_utils.py,sha256=Ct8ZRdK3TghVzuqv3a4pWk6p04szt5KOaizzk9LhY5Y,2849
|
1211
1208
|
vellum/workflows/descriptors/utils.py,sha256=lO_dbr5g3PXpHPtVBkdguAK4-1qayZ7RXjl3BgAhrMM,3795
|
1212
1209
|
vellum/workflows/edges/__init__.py,sha256=wSkmAnz9xyi4vZwtDbKxwlplt2skD7n3NsxkvR_pUus,50
|
1213
1210
|
vellum/workflows/edges/edge.py,sha256=N0SnY3gKVuxImPAdCbPMPlHJIXbkQ3fwq_LbJRvVMFc,677
|
@@ -1215,15 +1212,15 @@ vellum/workflows/emitters/__init__.py,sha256=YyOgaoLtVW8eFNEWODzCYb0HzL0PoSeNRf4
|
|
1215
1212
|
vellum/workflows/emitters/base.py,sha256=D5SADKIvnbgKwIBgYm77jaqvpo1o0rz4MmuX_muRqQU,359
|
1216
1213
|
vellum/workflows/environment/__init__.py,sha256=wGHslgSEZ7Octe4C-hNtl84EFelNimgmWQoi7px4-uw,71
|
1217
1214
|
vellum/workflows/environment/environment.py,sha256=IwcVSwA51jW1JTN_MAN22UbeAtZhiAVa_JRV4rmpAAs,219
|
1218
|
-
vellum/workflows/errors/__init__.py,sha256=
|
1219
|
-
vellum/workflows/errors/types.py,sha256=
|
1215
|
+
vellum/workflows/errors/__init__.py,sha256=tWGPu5xyAU8gRb8_bl0fL7OfU3wxQ9UH6qVwy4X4P_Q,113
|
1216
|
+
vellum/workflows/errors/types.py,sha256=mvywC2sXtpRrkDRfTx-O6aXAp0hOFyx27a1tqguKt4g,2493
|
1220
1217
|
vellum/workflows/events/__init__.py,sha256=6pxxceJo2dcaRkWtkDAYlUQZ-PHBQSZytIoyuUK48Qw,759
|
1221
|
-
vellum/workflows/events/node.py,sha256=
|
1218
|
+
vellum/workflows/events/node.py,sha256=QOikR6w5KXJUjnDNF2RhjXRbG7lJySetAoPamyr733Y,5264
|
1222
1219
|
vellum/workflows/events/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1223
|
-
vellum/workflows/events/tests/test_event.py,sha256=
|
1220
|
+
vellum/workflows/events/tests/test_event.py,sha256=EFg34nGpl_LvbHWN5AuiMqH6PetwGF_z0TlETGsn_bU,12725
|
1224
1221
|
vellum/workflows/events/types.py,sha256=7sBSMNstsibqq93Klu4A-GInzo4IB23xWel595Uyi_Y,3077
|
1225
|
-
vellum/workflows/events/workflow.py,sha256=
|
1226
|
-
vellum/workflows/exceptions.py,sha256=
|
1222
|
+
vellum/workflows/events/workflow.py,sha256=LW1qjLYCa9mpZjxp6YuDDA0M-q0COBIfLuduP9pOfyo,5224
|
1223
|
+
vellum/workflows/exceptions.py,sha256=gXQvDL919cK3pwXc8BhLGKmR-YOskYDLvL1zPSSmLS4,579
|
1227
1224
|
vellum/workflows/expressions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1228
1225
|
vellum/workflows/expressions/accessor.py,sha256=OFvAHAVABr-k7GceIhtzIurV4OuV_yHft7JPRsq87Es,1472
|
1229
1226
|
vellum/workflows/expressions/and_.py,sha256=I7lNqrUM3-m_5hmjjiMhaHhJtKcLj39kEFVWPDOqwfo,916
|
@@ -1260,77 +1257,77 @@ vellum/workflows/inputs/base.py,sha256=1kMgr0WqCYdWUqgFvgSoAMw2067FAlgwhGXLgbIOr
|
|
1260
1257
|
vellum/workflows/logging.py,sha256=_a217XogktV4Ncz6xKFz7WfYmZAzkfVRVuC0rWob8ls,437
|
1261
1258
|
vellum/workflows/nodes/__init__.py,sha256=aVdQVv7Y3Ro3JlqXGpxwaU2zrI06plDHD2aumH5WUIs,1157
|
1262
1259
|
vellum/workflows/nodes/bases/__init__.py,sha256=Ll1Ti6t3e_HKtGLsQTHAJevDmfo0QtfgPZUZ9FCRduI,140
|
1263
|
-
vellum/workflows/nodes/bases/base.py,sha256=
|
1260
|
+
vellum/workflows/nodes/bases/base.py,sha256=oqNO8rEeSu86wBuXQ8pGIOCZP7Bc_PdDL1etz_ef2A0,14271
|
1264
1261
|
vellum/workflows/nodes/bases/base_subworkflow_node/__init__.py,sha256=0nkHQiFC4IpA1ZGx60XG0BLUWF6hwUpgqmS3ZrlFGhg,80
|
1265
1262
|
vellum/workflows/nodes/bases/base_subworkflow_node/node.py,sha256=vC0gUBQewAUNtP3i2G0-LUpE_kY-r_ijBD_tS1XkQ1E,383
|
1266
1263
|
vellum/workflows/nodes/bases/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1267
|
-
vellum/workflows/nodes/bases/tests/test_base_node.py,sha256=
|
1264
|
+
vellum/workflows/nodes/bases/tests/test_base_node.py,sha256=ghpLm_ljNBxWs43GlvIId47hOVwKU50XpvZxmlg6_8g,3439
|
1268
1265
|
vellum/workflows/nodes/core/__init__.py,sha256=5zDMCmyt1v0HTJzlUBwq3U9L825yZGZhT9JL18-mRR4,455
|
1269
1266
|
vellum/workflows/nodes/core/error_node/__init__.py,sha256=g7RRnlHhqu4qByfLjBwCunmgGA8dI5gNsjS3h6TwlSI,60
|
1270
|
-
vellum/workflows/nodes/core/error_node/node.py,sha256=
|
1267
|
+
vellum/workflows/nodes/core/error_node/node.py,sha256=MFHU5vITYSK-L9CuMZ49In2ZeNLWnhZD0f8r5dWvb5Y,1270
|
1271
1268
|
vellum/workflows/nodes/core/inline_subworkflow_node/__init__.py,sha256=nKNEH1QTl-1PcvmYoqSWEl0-t6gAur8GLTXHzklRQfM,84
|
1272
|
-
vellum/workflows/nodes/core/inline_subworkflow_node/node.py,sha256=
|
1269
|
+
vellum/workflows/nodes/core/inline_subworkflow_node/node.py,sha256=vSlDEKwJsd2YazkWPRXPiNKZtbyhTBhfO3dJxcNiSWE,3059
|
1273
1270
|
vellum/workflows/nodes/core/map_node/__init__.py,sha256=MXpZYmGfhsMJHqqlpd64WiJRtbAtAMQz-_3fCU_cLV0,56
|
1274
|
-
vellum/workflows/nodes/core/map_node/node.py,sha256=
|
1271
|
+
vellum/workflows/nodes/core/map_node/node.py,sha256=vubEWObFh6rVUZ9GGHSi7H9b-Y-SHCwEgYkgdb3QTgM,7288
|
1275
1272
|
vellum/workflows/nodes/core/map_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1276
1273
|
vellum/workflows/nodes/core/map_node/tests/test_node.py,sha256=RHSZs7t6mW3UWvRrXnHZqaXVdRT2ZquOK_YHJ-gzXsU,1871
|
1277
1274
|
vellum/workflows/nodes/core/retry_node/__init__.py,sha256=lN2bIy5a3Uzhs_FYCrooADyYU6ZGShtvLKFWpelwPvo,60
|
1278
|
-
vellum/workflows/nodes/core/retry_node/node.py,sha256=
|
1275
|
+
vellum/workflows/nodes/core/retry_node/node.py,sha256=IjNcpzFmHyBUjOHEoULLbKf85B5Dva2XNR6jxPxZeoc,4223
|
1279
1276
|
vellum/workflows/nodes/core/retry_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1280
|
-
vellum/workflows/nodes/core/retry_node/tests/test_node.py,sha256=
|
1277
|
+
vellum/workflows/nodes/core/retry_node/tests/test_node.py,sha256=QXTnHwmJHISxXjvZMeuuEo0iVugVMJyaJoggI8yKXfI,3132
|
1281
1278
|
vellum/workflows/nodes/core/templating_node/__init__.py,sha256=GmyuYo81_A1_Bz6id69ozVFS6FKiuDsZTiA3I6MaL2U,70
|
1282
1279
|
vellum/workflows/nodes/core/templating_node/custom_filters.py,sha256=Q0DahYRHP4KfaUXDt9XxN-DFLBrAxlv90yaVqxScoUw,264
|
1283
1280
|
vellum/workflows/nodes/core/templating_node/exceptions.py,sha256=cDp140PP4OnInW4qAvg3KqiSiF70C71UyEAKRBR1Abo,46
|
1284
|
-
vellum/workflows/nodes/core/templating_node/node.py,sha256=
|
1281
|
+
vellum/workflows/nodes/core/templating_node/node.py,sha256=Q5U5lAW1nhGFJPc94Gxnq1s5RWrbOo7G_AY4n-ABmGg,4504
|
1285
1282
|
vellum/workflows/nodes/core/templating_node/render.py,sha256=OpJp0NAH6qcEL6K9lxR0qjpFb75TYNttJR5iCos8tmg,1792
|
1286
1283
|
vellum/workflows/nodes/core/templating_node/tests/test_templating_node.py,sha256=0BtXeSix7KGIuKzlPFTMLATpNnFPhut1UV_srGptkt0,1120
|
1287
1284
|
vellum/workflows/nodes/core/try_node/__init__.py,sha256=JVD4DrldTIqFQQFrubs9KtWCCc0YCAc7Fzol5ZWIWeM,56
|
1288
|
-
vellum/workflows/nodes/core/try_node/node.py,sha256=
|
1285
|
+
vellum/workflows/nodes/core/try_node/node.py,sha256=_xkpUNIfHXuwjivMBxdU5DegsNge2ITW5nBifWmBPTY,6670
|
1289
1286
|
vellum/workflows/nodes/core/try_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1290
|
-
vellum/workflows/nodes/core/try_node/tests/test_node.py,sha256=
|
1287
|
+
vellum/workflows/nodes/core/try_node/tests/test_node.py,sha256=uqMU7ZPPHI6a-VoWnMSVwTHoRmqCk6w8wzaXogTV_J4,4093
|
1291
1288
|
vellum/workflows/nodes/displayable/__init__.py,sha256=6F_4DlSwvHuilWnIalp8iDjjDXl0Nmz4QzJV2PYe5RI,1023
|
1292
1289
|
vellum/workflows/nodes/displayable/api_node/__init__.py,sha256=MoxdQSnidIj1Nf_d-hTxlOxcZXaZnsWFDbE-PkTK24o,56
|
1293
1290
|
vellum/workflows/nodes/displayable/api_node/node.py,sha256=ehvJNkI-L_WLn8pszCaRkQuhRDgioCLaX6TT72KM_9E,2111
|
1294
1291
|
vellum/workflows/nodes/displayable/bases/__init__.py,sha256=0mWIx3qUrzllV7jqt7wN03vWGMuI1WrrLZeMLT2Cl2c,304
|
1295
1292
|
vellum/workflows/nodes/displayable/bases/api_node/__init__.py,sha256=1jwx4WC358CLA1jgzl_UD-rZmdMm2v9Mps39ndwCD7U,64
|
1296
|
-
vellum/workflows/nodes/displayable/bases/api_node/node.py,sha256=
|
1293
|
+
vellum/workflows/nodes/displayable/bases/api_node/node.py,sha256=x0RQVoG1yvokaPfGgf719qd0Lt5qxCvKFqyehYiGyqA,2481
|
1297
1294
|
vellum/workflows/nodes/displayable/bases/base_prompt_node/__init__.py,sha256=Org3xTvgp1pA0uUXFfnJr29D3HzCey2lEdYF4zbIUgo,70
|
1298
|
-
vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=
|
1295
|
+
vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=EvylK1rGKpd4iiooEW9O5A9Q8DMTtBwETe_GtQT8M-E,2139
|
1299
1296
|
vellum/workflows/nodes/displayable/bases/inline_prompt_node/__init__.py,sha256=Hl35IAoepRpE-j4cALaXVJIYTYOF3qszyVbxTj4kS1s,82
|
1300
1297
|
vellum/workflows/nodes/displayable/bases/inline_prompt_node/constants.py,sha256=fnjiRWLoRlC4Puo5oQcpZD5Hd-EesxsAo9l5tGAkpZQ,270
|
1301
|
-
vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=
|
1302
|
-
vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=
|
1303
|
-
vellum/workflows/nodes/displayable/bases/search_node.py,sha256=
|
1298
|
+
vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=mtnqcfpY5UYKCUm8HVL42juf5Q8MoJRg94V6CyEgZpQ,5398
|
1299
|
+
vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=zdpNJoawB5PedsCCfgOGDDoWuif0jNtlV-K9sFL6cNQ,4968
|
1300
|
+
vellum/workflows/nodes/displayable/bases/search_node.py,sha256=pqiui8G6l_9FLE1HH4rCdFC73Bl7_AIBAmQQMjqe190,3570
|
1304
1301
|
vellum/workflows/nodes/displayable/code_execution_node/__init__.py,sha256=0FLWMMktpzSnmBMizQglBpcPrP80fzVsoJwJgf822Cg,76
|
1305
|
-
vellum/workflows/nodes/displayable/code_execution_node/node.py,sha256=
|
1302
|
+
vellum/workflows/nodes/displayable/code_execution_node/node.py,sha256=JgyTgZRSb-gSXL4ccHn4VkPcPZFOkVK5ohPazPqSWFw,8652
|
1306
1303
|
vellum/workflows/nodes/displayable/code_execution_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1307
1304
|
vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1308
1305
|
vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/main.py,sha256=5QsbmkzSlSbcbWTG_JmIqcP-JNJzOPTKxGzdHos19W4,79
|
1309
|
-
vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py,sha256=
|
1306
|
+
vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py,sha256=s93M_EnU-4n60iSKv3FCf0kppwzFH5FNi9o9E58fQ3I,7510
|
1310
1307
|
vellum/workflows/nodes/displayable/code_execution_node/utils.py,sha256=LfI3kj2zQz6UGMld_uA9z2LjZobqRcgxQO4jdUWkg7o,376
|
1311
1308
|
vellum/workflows/nodes/displayable/conditional_node/__init__.py,sha256=AS_EIqFdU1F9t8aLmbZU-rLh9ry6LCJ0uj0D8F0L5Uw,72
|
1312
1309
|
vellum/workflows/nodes/displayable/conditional_node/node.py,sha256=REFZdEVetXGyOK1RbIN1T6yRblrP0hfyZUls2KfjTKg,1016
|
1313
1310
|
vellum/workflows/nodes/displayable/final_output_node/__init__.py,sha256=G7VXM4OWpubvSJtVkGmMNeqgb9GkM7qZT838eL18XU4,72
|
1314
1311
|
vellum/workflows/nodes/displayable/final_output_node/node.py,sha256=iH3ZPOstPku_rg4h97Xz5FMaHWVRCjypaamAFzoJzJ0,1854
|
1315
1312
|
vellum/workflows/nodes/displayable/guardrail_node/__init__.py,sha256=Ab5eXmOoBhyV4dMWdzh32HLUmnPIBEK_zFCT38C4Fng,68
|
1316
|
-
vellum/workflows/nodes/displayable/guardrail_node/node.py,sha256=
|
1313
|
+
vellum/workflows/nodes/displayable/guardrail_node/node.py,sha256=7Ep7Ff7FtFry3Jwxhg_npF_-jT2P6TGKp5MRNnCZ8Tc,3923
|
1317
1314
|
vellum/workflows/nodes/displayable/inline_prompt_node/__init__.py,sha256=gSUOoEZLlrx35-tQhSAd3An8WDwBqyiQh-sIebLU9wU,74
|
1318
|
-
vellum/workflows/nodes/displayable/inline_prompt_node/node.py,sha256=
|
1315
|
+
vellum/workflows/nodes/displayable/inline_prompt_node/node.py,sha256=dTnP1yH1P0NqMw3noxt9XwaDCpX8ZOhuvVYNAn_DdCQ,2119
|
1319
1316
|
vellum/workflows/nodes/displayable/merge_node/__init__.py,sha256=J8IC08dSH7P76wKlNuxe1sn7toNGtSQdFirUbtPDEs0,60
|
1320
1317
|
vellum/workflows/nodes/displayable/merge_node/node.py,sha256=ZyPvcTgfPOneOm5Dc2kUOoPkwNJqwRPZSj232akXynA,324
|
1321
1318
|
vellum/workflows/nodes/displayable/note_node/__init__.py,sha256=KWA3P4fyYJ-fOTky8qNGlcOotQ-HeHJ9AjZt6mRQmCE,58
|
1322
1319
|
vellum/workflows/nodes/displayable/note_node/node.py,sha256=8rwP7RS1OOyQJ-ZuZBXTCtT2ZW8J6eGD59iKmq_pB24,258
|
1323
1320
|
vellum/workflows/nodes/displayable/prompt_deployment_node/__init__.py,sha256=krX1Hds-TSVYZsx0wJFX4wsAKkEFYOX1ifwRGiIM-EA,82
|
1324
|
-
vellum/workflows/nodes/displayable/prompt_deployment_node/node.py,sha256=
|
1321
|
+
vellum/workflows/nodes/displayable/prompt_deployment_node/node.py,sha256=cpOrqQQanZ0xO4B4B3mgyBWKcnkT5b0DFxOSeS8otrI,2528
|
1325
1322
|
vellum/workflows/nodes/displayable/search_node/__init__.py,sha256=hpBpvbrDYf43DElRZFLzieSn8weXiwNiiNOJurERQbs,62
|
1326
1323
|
vellum/workflows/nodes/displayable/search_node/node.py,sha256=yhFWulbNmSQoDAwtTSGD4AtKmBbcykezRGRG16xga_0,1311
|
1327
1324
|
vellum/workflows/nodes/displayable/subworkflow_deployment_node/__init__.py,sha256=9yYM6001YZeqI1VOk1QuEM_yrffk_EdsO7qaPzINKds,92
|
1328
|
-
vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=
|
1325
|
+
vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=pnbRCgdzWXrXhm5jDkDDASl5xu5w3DxskC34yJVmWUs,7147
|
1329
1326
|
vellum/workflows/nodes/displayable/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1330
|
-
vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py,sha256=
|
1327
|
+
vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py,sha256=lLnXKAUYtgvQ6MpT4GoTrqLtdlyDlUt1pPHrmu-Gf00,4705
|
1331
1328
|
vellum/workflows/nodes/displayable/tests/test_search_node_wth_text_output.py,sha256=4CMwDtXwTaEvFfDpA6j2iLqc7S6IICSkvVZOobEpeps,6954
|
1332
1329
|
vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py,sha256=KqKJtJ0vuNoPuUPMdILmBTt4a2fBBxxun-nmOI7T8jo,2585
|
1333
|
-
vellum/workflows/nodes/utils.py,sha256=
|
1330
|
+
vellum/workflows/nodes/utils.py,sha256=RWQbcc6MgxHNwFjtasY4hzIH8pKe0E3zfVt6eJKGTp4,587
|
1334
1331
|
vellum/workflows/outputs/__init__.py,sha256=AyZ4pRh_ACQIGvkf0byJO46EDnSix1ZCAXfvh-ms1QE,94
|
1335
1332
|
vellum/workflows/outputs/base.py,sha256=a7W6rNSDSawwGAXYjNTF2iHb9lnZu7WFSOagZIyy__k,7976
|
1336
1333
|
vellum/workflows/ports/__init__.py,sha256=bZuMt-R7z5bKwpu4uPW7LlJeePOQWmCcDSXe5frUY5g,101
|
@@ -1340,18 +1337,18 @@ vellum/workflows/ports/utils.py,sha256=pEjVNJKw9LhD_cFN-o0MWBOW2ejno7jv26qqzjLxw
|
|
1340
1337
|
vellum/workflows/references/__init__.py,sha256=glHFC1VfXmcbNvH5VzFbkT03d8_D7MMcvEcsUBrzLIs,591
|
1341
1338
|
vellum/workflows/references/environment_variable.py,sha256=7FFtiKfc4eyVkkfUbhc666OBNDqvFlMoNQEYmGpEVVE,661
|
1342
1339
|
vellum/workflows/references/execution_count.py,sha256=JILHqt8ELdc9ct-WsVCA5X-rKiP1rmJODw-XTf4kpHI,722
|
1343
|
-
vellum/workflows/references/external_input.py,sha256=
|
1340
|
+
vellum/workflows/references/external_input.py,sha256=XHugauKYvAmsGoFnjgJh00FcXjSMIqBvRun_CZuJD64,1662
|
1344
1341
|
vellum/workflows/references/input.py,sha256=3INu-TLTi4dziWmva6LO3WvgDlPzsjayUx61cVvqLJA,325
|
1345
1342
|
vellum/workflows/references/lazy.py,sha256=SXwZUCTzUR-R2-uK0XHALtvp1x84l-QkNY-Ds6KynYA,1932
|
1346
|
-
vellum/workflows/references/node.py,sha256=
|
1343
|
+
vellum/workflows/references/node.py,sha256=LP854wDVs-9I_aZ7-nkbwXqL2H7W2_3LED2e9FixNS8,1418
|
1347
1344
|
vellum/workflows/references/output.py,sha256=6F4zIrGykDxBsR6qEXxEKncQV5zV4yHafnHRNkxvklc,2780
|
1348
|
-
vellum/workflows/references/state_value.py,sha256=
|
1345
|
+
vellum/workflows/references/state_value.py,sha256=bInUF0A3Pt4-zhA0f6LdSuyv8tz7n5QRkHAEn4gsmqI,711
|
1349
1346
|
vellum/workflows/references/vellum_secret.py,sha256=Od4d19a5yletWMqNfJR5d_mZQUkVcFzj29mE-T9J7yE,480
|
1350
|
-
vellum/workflows/references/workflow_input.py,sha256=
|
1347
|
+
vellum/workflows/references/workflow_input.py,sha256=86IuhlBz-9cGxeUzizyjdp482ajcl7h8MnX1soNFMII,1415
|
1351
1348
|
vellum/workflows/resolvers/__init__.py,sha256=eH6hTvZO4IciDaf_cf7aM2vs-DkBDyJPycOQevJxQnI,82
|
1352
1349
|
vellum/workflows/resolvers/base.py,sha256=WHra9LRtlTuB1jmuNqkfVE2JUgB61Cyntn8f0b0WZg4,411
|
1353
1350
|
vellum/workflows/runner/__init__.py,sha256=i1iG5sAhtpdsrlvwgH6B-m49JsINkiWyPWs8vyT-bqM,72
|
1354
|
-
vellum/workflows/runner/runner.py,sha256=
|
1351
|
+
vellum/workflows/runner/runner.py,sha256=RXnLEmSJFbp0u4vKF7rvD2fscuYfcRYkspIJINnvFAI,27607
|
1355
1352
|
vellum/workflows/state/__init__.py,sha256=yUUdR-_Vl7UiixNDYQZ-GEM_kJI9dnOia75TtuNEsnE,60
|
1356
1353
|
vellum/workflows/state/base.py,sha256=jpSzF1OQd3-fqi6dMGlNsQl-7JnJxCdzWIigmX8Wz-I,14425
|
1357
1354
|
vellum/workflows/state/context.py,sha256=oXiEdNsWJi1coRB85IreTgUeR6_CrWWBXndtLff9S7M,1272
|
@@ -1372,14 +1369,16 @@ vellum/workflows/utils/names.py,sha256=QLUqfJ1tmSEeUwBKTTiv_Qk3QGbInC2RSmlXfGXc8
|
|
1372
1369
|
vellum/workflows/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1373
1370
|
vellum/workflows/utils/tests/test_functions.py,sha256=68OdrS1Gf3incmRd4g3a7-nylqQbJdQjl7AyfVUJg5I,5223
|
1374
1371
|
vellum/workflows/utils/tests/test_names.py,sha256=aOqpyvMsOEK_9mg_-yaNxQDW7QQfwqsYs37PseyLhxw,402
|
1372
|
+
vellum/workflows/utils/tests/test_uuids.py,sha256=i77ABQ0M3S-aFLzDXHJq_yr5FPkJEWCMBn1HJ3DObrE,437
|
1375
1373
|
vellum/workflows/utils/tests/test_vellum_variables.py,sha256=0ISy1xjY7_rci0Mt_naK0xrmurE1REZLMCgPOCLFKRM,776
|
1374
|
+
vellum/workflows/utils/uuids.py,sha256=DFzPv9RCvsKhvdTEIQyfSek2A31D6S_QcmeLPbgrgTY,739
|
1376
1375
|
vellum/workflows/utils/vellum_variables.py,sha256=DsjVj_M_vTafpi5OUDs4KNrmbU2n4LR7fcLhuHb67Z4,3123
|
1377
1376
|
vellum/workflows/vellum_client.py,sha256=ODrq_TSl-drX2aezXegf7pizpWDVJuTXH-j6528t75s,683
|
1378
1377
|
vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
|
1379
|
-
vellum/workflows/workflows/base.py,sha256=
|
1378
|
+
vellum/workflows/workflows/base.py,sha256=jFu_AAyt4IqOrwanyflNnDhgYpX4oTVR5xnow8ynRhg,16811
|
1380
1379
|
vellum/workflows/workflows/event_filters.py,sha256=-uQcMB7IpPd-idMku8f2QNVhPXPFWo6FZLlGjRf8rCo,1996
|
1381
|
-
vellum_ai-0.
|
1382
|
-
vellum_ai-0.
|
1383
|
-
vellum_ai-0.
|
1384
|
-
vellum_ai-0.
|
1385
|
-
vellum_ai-0.
|
1380
|
+
vellum_ai-0.12.0.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
|
1381
|
+
vellum_ai-0.12.0.dist-info/METADATA,sha256=G0NUeEg1fGbbdnprmeZoIMid6axw--aQsIRB6E2TyJs,5128
|
1382
|
+
vellum_ai-0.12.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
1383
|
+
vellum_ai-0.12.0.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
|
1384
|
+
vellum_ai-0.12.0.dist-info/RECORD,,
|
@@ -1,18 +1,30 @@
|
|
1
1
|
from functools import cached_property
|
2
2
|
import inspect
|
3
3
|
from uuid import UUID
|
4
|
-
from typing import
|
4
|
+
from typing import (
|
5
|
+
TYPE_CHECKING,
|
6
|
+
Any,
|
7
|
+
Dict,
|
8
|
+
ForwardRef,
|
9
|
+
Generic,
|
10
|
+
Optional,
|
11
|
+
Tuple,
|
12
|
+
Type,
|
13
|
+
TypeVar,
|
14
|
+
cast,
|
15
|
+
get_args,
|
16
|
+
get_origin,
|
17
|
+
)
|
5
18
|
|
6
19
|
from vellum.workflows.nodes.bases.base import BaseNode
|
7
|
-
from vellum.workflows.nodes.utils import get_wrapped_node, has_wrapped_node
|
8
20
|
from vellum.workflows.ports import Port
|
9
21
|
from vellum.workflows.references import OutputReference
|
10
22
|
from vellum.workflows.types.core import JsonObject
|
11
23
|
from vellum.workflows.types.generics import NodeType
|
12
24
|
from vellum.workflows.types.utils import get_original_base
|
13
25
|
from vellum.workflows.utils.names import pascal_to_title_case
|
26
|
+
from vellum.workflows.utils.uuids import uuid4_from_hash
|
14
27
|
from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay, PortDisplay, PortDisplayOverrides
|
15
|
-
from vellum_ee.workflows.display.utils.uuids import uuid4_from_hash
|
16
28
|
from vellum_ee.workflows.display.vellum import CodeResourceDefinition, NodeDefinition
|
17
29
|
|
18
30
|
if TYPE_CHECKING:
|
@@ -21,16 +33,24 @@ if TYPE_CHECKING:
|
|
21
33
|
_NodeDisplayAttrType = TypeVar("_NodeDisplayAttrType")
|
22
34
|
|
23
35
|
|
24
|
-
class
|
36
|
+
class BaseNodeDisplayMeta(type):
|
37
|
+
def __new__(mcs, name: str, bases: Tuple[Type, ...], dct: Dict[str, Any]) -> Any:
|
38
|
+
cls = super().__new__(mcs, name, bases, dct)
|
39
|
+
if isinstance(dct.get("node_id"), UUID):
|
40
|
+
# Display classes are able to override the id of the node class it's parameterized by
|
41
|
+
base_node_display_class = cast(Type["BaseNodeDisplay"], cls)
|
42
|
+
node_class = base_node_display_class.infer_node_class()
|
43
|
+
node_class.__id__ = dct["node_id"]
|
44
|
+
return cls
|
45
|
+
|
46
|
+
|
47
|
+
class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
|
25
48
|
output_display: Dict[OutputReference, NodeOutputDisplay] = {}
|
26
49
|
port_displays: Dict[Port, PortDisplayOverrides] = {}
|
27
50
|
|
28
51
|
# Used to store the mapping between node types and their display classes
|
29
52
|
_node_display_registry: Dict[Type[NodeType], Type["BaseNodeDisplay"]] = {}
|
30
53
|
|
31
|
-
def __init__(self, node: Type[NodeType]):
|
32
|
-
self._node = node
|
33
|
-
|
34
54
|
def serialize(self, display_context: "WorkflowDisplayContext", **kwargs: Any) -> JsonObject:
|
35
55
|
raise NotImplementedError(f"Serialization for nodes of type {self._node.__name__} is not supported.")
|
36
56
|
|
@@ -71,6 +91,23 @@ class BaseNodeDisplay(Generic[NodeType]):
|
|
71
91
|
def get_from_node_display_registry(cls, node_class: Type[NodeType]) -> Type["BaseNodeDisplay"]:
|
72
92
|
return cls._node_display_registry[node_class]
|
73
93
|
|
94
|
+
@classmethod
|
95
|
+
def infer_node_class(cls) -> Type[NodeType]:
|
96
|
+
original_base = get_original_base(cls)
|
97
|
+
node_class = get_args(original_base)[0]
|
98
|
+
if isinstance(node_class, TypeVar):
|
99
|
+
bounded_class = node_class.__bound__
|
100
|
+
if inspect.isclass(bounded_class) and issubclass(bounded_class, BaseNode):
|
101
|
+
return cast(Type[NodeType], bounded_class)
|
102
|
+
|
103
|
+
if isinstance(bounded_class, ForwardRef) and bounded_class.__forward_arg__ == BaseNode.__name__:
|
104
|
+
return cast(Type[NodeType], BaseNode)
|
105
|
+
|
106
|
+
if issubclass(node_class, BaseNode):
|
107
|
+
return node_class
|
108
|
+
|
109
|
+
raise ValueError(f"Node {cls.__name__} must be a subclass of {BaseNode.__name__}")
|
110
|
+
|
74
111
|
@cached_property
|
75
112
|
def node_id(self) -> UUID:
|
76
113
|
"""Can be overridden as a class attribute to specify a custom node id."""
|
@@ -81,6 +118,10 @@ class BaseNodeDisplay(Generic[NodeType]):
|
|
81
118
|
"""Can be overridden as a class attribute to specify a custom label."""
|
82
119
|
return pascal_to_title_case(self._node.__name__)
|
83
120
|
|
121
|
+
@property
|
122
|
+
def _node(self) -> Type[NodeType]:
|
123
|
+
return self.infer_node_class()
|
124
|
+
|
84
125
|
@classmethod
|
85
126
|
def _get_explicit_node_display_attr(
|
86
127
|
cls,
|
@@ -124,17 +165,5 @@ class BaseNodeDisplay(Generic[NodeType]):
|
|
124
165
|
def __init_subclass__(cls, **kwargs: Any) -> None:
|
125
166
|
super().__init_subclass__(**kwargs)
|
126
167
|
|
127
|
-
|
128
|
-
node_class =
|
129
|
-
if isinstance(node_class, TypeVar):
|
130
|
-
bounded_class = node_class.__bound__
|
131
|
-
if inspect.isclass(bounded_class) and issubclass(bounded_class, BaseNode):
|
132
|
-
cls._node_display_registry[bounded_class] = cls
|
133
|
-
elif issubclass(node_class, BaseNode):
|
134
|
-
if has_wrapped_node(node_class):
|
135
|
-
wrapped_node = get_wrapped_node(node_class)
|
136
|
-
if wrapped_node._is_wrapped_node:
|
137
|
-
cls._node_display_registry[wrapped_node] = cls
|
138
|
-
return
|
139
|
-
|
140
|
-
cls._node_display_registry[node_class] = cls
|
168
|
+
node_class = cls.infer_node_class()
|
169
|
+
cls._node_display_registry[node_class] = cls
|
@@ -3,9 +3,9 @@ from typing import ClassVar, Dict, Optional
|
|
3
3
|
|
4
4
|
from vellum.workflows.ports import Port
|
5
5
|
from vellum.workflows.types.generics import NodeType
|
6
|
+
from vellum.workflows.utils.uuids import uuid4_from_hash
|
6
7
|
from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
|
7
8
|
from vellum_ee.workflows.display.nodes.types import PortDisplay
|
8
|
-
from vellum_ee.workflows.display.utils.uuids import uuid4_from_hash
|
9
9
|
from vellum_ee.workflows.display.vellum import NodeDisplayData
|
10
10
|
|
11
11
|
|
@@ -30,6 +30,15 @@ class BaseNodeVellumDisplay(BaseNodeDisplay[NodeType]):
|
|
30
30
|
def get_target_handle_id(self) -> UUID:
|
31
31
|
return self._get_node_display_uuid("target_handle_id")
|
32
32
|
|
33
|
+
def get_target_handle_id_by_source_node_id(self, source_node_id: UUID) -> UUID:
|
34
|
+
"""
|
35
|
+
In the vast majority of cases, nodes will only have a single target handle and can be retrieved independently
|
36
|
+
of the source node. However, in rare cases (such as legacy Merge nodes), this method can be overridden to
|
37
|
+
account for the case of retrieving one amongst multiple target handles on a node.
|
38
|
+
"""
|
39
|
+
|
40
|
+
return self.get_target_handle_id()
|
41
|
+
|
33
42
|
def get_source_handle_id(self, port_displays: Dict[Port, PortDisplay]) -> UUID:
|
34
43
|
default_port = self._node.Ports.default
|
35
44
|
default_port_display = port_displays[default_port]
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import types
|
1
2
|
from typing import Optional, Type
|
2
3
|
|
3
4
|
from vellum.workflows.types.generics import NodeType
|
@@ -11,9 +12,17 @@ def get_node_display_class(
|
|
11
12
|
node_display_class = base_class.get_from_node_display_registry(node_class)
|
12
13
|
except KeyError:
|
13
14
|
try:
|
14
|
-
|
15
|
+
base_node_display_class = get_node_display_class(
|
15
16
|
base_class, node_class.__bases__[0], node_class if root_node_class is None else root_node_class
|
16
17
|
)
|
18
|
+
|
19
|
+
# `base_node_display_class` is always a Generic class, so it's safe to index into it
|
20
|
+
NodeDisplayBaseClass = base_node_display_class[node_class] # type: ignore[index]
|
21
|
+
NodeDisplayClass = types.new_class(
|
22
|
+
f"{node_class.__name__}Display",
|
23
|
+
bases=(NodeDisplayBaseClass,),
|
24
|
+
)
|
25
|
+
return NodeDisplayClass
|
17
26
|
except IndexError:
|
18
27
|
return base_class
|
19
28
|
|