vellum-ai 0.14.39__py3-none-any.whl → 0.14.40__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.
- vellum/client/core/client_wrapper.py +1 -1
- vellum/workflows/nodes/bases/tests/test_base_node.py +24 -0
- vellum/workflows/nodes/core/try_node/node.py +1 -2
- vellum/workflows/nodes/experimental/tool_calling_node/__init__.py +3 -0
- vellum/workflows/nodes/experimental/tool_calling_node/node.py +147 -0
- vellum/workflows/nodes/experimental/tool_calling_node/utils.py +132 -0
- vellum/workflows/nodes/utils.py +4 -2
- vellum/workflows/outputs/base.py +3 -2
- vellum/workflows/references/output.py +20 -0
- vellum/workflows/state/base.py +36 -14
- vellum/workflows/state/tests/test_state.py +5 -2
- vellum/workflows/types/stack.py +11 -0
- vellum/workflows/workflows/base.py +5 -0
- vellum/workflows/workflows/tests/test_base_workflow.py +96 -9
- {vellum_ai-0.14.39.dist-info → vellum_ai-0.14.40.dist-info}/METADATA +1 -1
- {vellum_ai-0.14.39.dist-info → vellum_ai-0.14.40.dist-info}/RECORD +67 -62
- vellum_cli/push.py +0 -2
- vellum_ee/workflows/display/base.py +14 -1
- vellum_ee/workflows/display/nodes/base_node_display.py +56 -14
- vellum_ee/workflows/display/nodes/get_node_display_class.py +9 -15
- vellum_ee/workflows/display/nodes/tests/test_base_node_display.py +36 -0
- vellum_ee/workflows/display/nodes/vellum/base_adornment_node.py +3 -2
- vellum_ee/workflows/display/nodes/vellum/retry_node.py +1 -2
- vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py +1 -2
- vellum_ee/workflows/display/nodes/vellum/tests/test_error_node.py +1 -2
- vellum_ee/workflows/display/nodes/vellum/tests/test_note_node.py +1 -2
- vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_node.py +55 -3
- vellum_ee/workflows/display/nodes/vellum/tests/test_retry_node.py +1 -2
- vellum_ee/workflows/display/nodes/vellum/tests/test_templating_node.py +1 -2
- vellum_ee/workflows/display/nodes/vellum/tests/test_try_node.py +1 -2
- vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/try_node.py +1 -2
- vellum_ee/workflows/display/nodes/vellum/utils.py +7 -1
- vellum_ee/workflows/display/tests/{test_vellum_workflow_display.py → test_base_workflow_display.py} +10 -22
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py +4 -6
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py +7 -16
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py +2 -6
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py +1 -2
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py +3 -10
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py +4 -5
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_state_serialization.py +1 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py +1 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py +2 -5
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py +7 -5
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_prompt_node_serialization.py +1 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py +1 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +1 -2
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py +1 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py +1 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py +7 -5
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py +1 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py +1 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py +1 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py +2 -5
- vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py +2 -7
- vellum_ee/workflows/display/types.py +5 -4
- vellum_ee/workflows/display/utils/exceptions.py +7 -0
- vellum_ee/workflows/display/utils/registry.py +37 -0
- vellum_ee/workflows/display/utils/vellum.py +2 -1
- vellum_ee/workflows/display/workflows/base_workflow_display.py +281 -43
- vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py +34 -21
- vellum_ee/workflows/display/workflows/tests/test_workflow_display.py +58 -20
- vellum_ee/workflows/display/workflows/vellum_workflow_display.py +4 -257
- vellum_ee/workflows/tests/local_workflow/display/workflow.py +2 -2
- {vellum_ai-0.14.39.dist-info → vellum_ai-0.14.40.dist-info}/LICENSE +0 -0
- {vellum_ai-0.14.39.dist-info → vellum_ai-0.14.40.dist-info}/WHEEL +0 -0
- {vellum_ai-0.14.39.dist-info → vellum_ai-0.14.40.dist-info}/entry_points.txt +0 -0
@@ -1,5 +1,5 @@
|
|
1
1
|
import pytest
|
2
|
-
from uuid import uuid4
|
2
|
+
from uuid import UUID, uuid4
|
3
3
|
|
4
4
|
from vellum.workflows.edges.edge import Edge
|
5
5
|
from vellum.workflows.inputs.base import BaseInputs
|
@@ -7,6 +7,7 @@ from vellum.workflows.nodes.bases.base import BaseNode
|
|
7
7
|
from vellum.workflows.nodes.core.inline_subworkflow_node.node import InlineSubworkflowNode
|
8
8
|
from vellum.workflows.outputs.base import BaseOutputs
|
9
9
|
from vellum.workflows.state.base import BaseState
|
10
|
+
from vellum.workflows.types.stack import Stack
|
10
11
|
from vellum.workflows.workflows.base import BaseWorkflow
|
11
12
|
|
12
13
|
|
@@ -326,7 +327,6 @@ def test_workflow__unsupported_graph_item():
|
|
326
327
|
|
327
328
|
|
328
329
|
def test_base_workflow__deserialize_state():
|
329
|
-
|
330
330
|
# GIVEN a state definition
|
331
331
|
class State(BaseState):
|
332
332
|
bar: str
|
@@ -340,6 +340,14 @@ def test_base_workflow__deserialize_state():
|
|
340
340
|
class Outputs(BaseNode.Outputs):
|
341
341
|
foo: str
|
342
342
|
|
343
|
+
# AND a node id for node A
|
344
|
+
node_a_id = uuid4()
|
345
|
+
NodeA.__id__ = node_a_id
|
346
|
+
|
347
|
+
# AND an output id for NodeA.Outputs.foo
|
348
|
+
node_a_output_id = uuid4()
|
349
|
+
NodeA.__output_ids__["foo"] = node_a_output_id
|
350
|
+
|
343
351
|
# AND a workflow that uses all three
|
344
352
|
class TestWorkflow(BaseWorkflow[Inputs, State]):
|
345
353
|
graph = NodeA
|
@@ -356,20 +364,20 @@ def test_base_workflow__deserialize_state():
|
|
356
364
|
"updated_ts": "2025-04-14T19:22:18.504902",
|
357
365
|
"external_inputs": {},
|
358
366
|
"node_outputs": {
|
359
|
-
|
367
|
+
str(node_a_output_id): "My node A output foo",
|
360
368
|
},
|
361
369
|
"node_execution_cache": {
|
362
370
|
"dependencies_invoked": {
|
363
|
-
last_span_id: [
|
371
|
+
last_span_id: [str(node_a_id)],
|
364
372
|
},
|
365
373
|
"node_executions_initiated": {
|
366
|
-
|
374
|
+
str(node_a_id): [last_span_id],
|
367
375
|
},
|
368
376
|
"node_executions_fulfilled": {
|
369
|
-
|
377
|
+
str(node_a_id): [last_span_id],
|
370
378
|
},
|
371
379
|
"node_executions_queued": {
|
372
|
-
|
380
|
+
str(node_a_id): [],
|
373
381
|
},
|
374
382
|
},
|
375
383
|
"parent": None,
|
@@ -384,8 +392,87 @@ def test_base_workflow__deserialize_state():
|
|
384
392
|
assert isinstance(state.meta.workflow_inputs, Inputs)
|
385
393
|
assert state.meta.workflow_inputs.baz == "My input baz"
|
386
394
|
|
387
|
-
# AND the node execution cache should deserialize
|
388
|
-
assert state.meta.node_execution_cache
|
395
|
+
# AND the node execution cache should deserialize correctly
|
396
|
+
assert state.meta.node_execution_cache._node_executions_initiated == {NodeA: {UUID(last_span_id)}}
|
397
|
+
assert state.meta.node_execution_cache._node_executions_fulfilled == {NodeA: Stack.from_list([UUID(last_span_id)])}
|
398
|
+
assert state.meta.node_execution_cache._node_executions_queued == {NodeA: []}
|
399
|
+
assert state.meta.node_execution_cache._dependencies_invoked == {UUID(last_span_id): {NodeA}}
|
400
|
+
|
401
|
+
|
402
|
+
def test_base_workflow__deserialize_legacy_node_execution_cache():
|
403
|
+
|
404
|
+
# GIVEN a state definition
|
405
|
+
class State(BaseState):
|
406
|
+
bar: str
|
407
|
+
|
408
|
+
# AND a node
|
409
|
+
class NodeA(BaseNode):
|
410
|
+
class Outputs(BaseNode.Outputs):
|
411
|
+
foo: str
|
412
|
+
|
413
|
+
# AND a workflow that uses both
|
414
|
+
class TestWorkflow(BaseWorkflow[BaseInputs, State]):
|
415
|
+
graph = NodeA
|
416
|
+
|
417
|
+
# WHEN we deserialize the state that had a legacy node execution cache format
|
418
|
+
last_span_id = str(uuid4())
|
419
|
+
node_a_full_name = "vellum.workflows.workflows.tests.test_base_workflow.test_base_workflow__deserialize_legacy_node_execution_cache.<locals>.NodeA" # noqa: E501
|
420
|
+
state = TestWorkflow.deserialize_state(
|
421
|
+
{
|
422
|
+
"meta": {
|
423
|
+
"node_execution_cache": {
|
424
|
+
"dependencies_invoked": {
|
425
|
+
last_span_id: [node_a_full_name],
|
426
|
+
},
|
427
|
+
"node_executions_initiated": {
|
428
|
+
node_a_full_name: [last_span_id],
|
429
|
+
},
|
430
|
+
"node_executions_fulfilled": {
|
431
|
+
node_a_full_name: [last_span_id],
|
432
|
+
},
|
433
|
+
"node_executions_queued": {
|
434
|
+
node_a_full_name: [],
|
435
|
+
},
|
436
|
+
},
|
437
|
+
},
|
438
|
+
},
|
439
|
+
)
|
440
|
+
|
441
|
+
# THEN the node execution cache should deserialize correctly
|
442
|
+
assert state.meta.node_execution_cache._node_executions_initiated == {NodeA: {UUID(last_span_id)}}
|
443
|
+
assert state.meta.node_execution_cache._node_executions_fulfilled == {NodeA: Stack.from_list([UUID(last_span_id)])}
|
444
|
+
assert state.meta.node_execution_cache._node_executions_queued == {NodeA: []}
|
445
|
+
assert state.meta.node_execution_cache._dependencies_invoked == {UUID(last_span_id): {NodeA}}
|
446
|
+
|
447
|
+
|
448
|
+
def test_base_workflow__deserialize_legacy_node_outputs():
|
449
|
+
|
450
|
+
# GIVEN a state definition
|
451
|
+
class State(BaseState):
|
452
|
+
bar: str
|
453
|
+
|
454
|
+
# AND a node
|
455
|
+
class NodeA(BaseNode):
|
456
|
+
class Outputs(BaseNode.Outputs):
|
457
|
+
foo: str
|
458
|
+
|
459
|
+
# AND a workflow that uses both
|
460
|
+
class TestWorkflow(BaseWorkflow[BaseInputs, State]):
|
461
|
+
graph = NodeA
|
462
|
+
|
463
|
+
# WHEN we deserialize the state that had a legacy node execution cache format
|
464
|
+
state = TestWorkflow.deserialize_state(
|
465
|
+
{
|
466
|
+
"meta": {
|
467
|
+
"node_outputs": {
|
468
|
+
"test_base_workflow__deserialize_legacy_node_outputs.<locals>.NodeA.Outputs.foo": "My node A output foo", # noqa: E501
|
469
|
+
},
|
470
|
+
},
|
471
|
+
},
|
472
|
+
)
|
473
|
+
|
474
|
+
# THEN the node execution cache should deserialize correctly
|
475
|
+
assert state.meta.node_outputs == {NodeA.Outputs.foo: "My node A output foo"}
|
389
476
|
|
390
477
|
|
391
478
|
def test_base_workflow__deserialize_state_with_optional_inputs():
|
@@ -8,7 +8,7 @@ vellum_cli/init.py,sha256=WpnMXPItPmh0f0bBGIer3p-e5gu8DUGwSArT_FuoMEw,5093
|
|
8
8
|
vellum_cli/logger.py,sha256=PuRFa0WCh4sAGFS5aqWB0QIYpS6nBWwPJrIXpWxugV4,1022
|
9
9
|
vellum_cli/ping.py,sha256=p_BCCRjgPhng6JktuECtkDQLbhopt6JpmrtGoLnLJT8,1161
|
10
10
|
vellum_cli/pull.py,sha256=27Mh10aQ8H1OkTmQOJcOuJ5cQcYbNjkkuQrBmtkRe0o,12262
|
11
|
-
vellum_cli/push.py,sha256=
|
11
|
+
vellum_cli/push.py,sha256=0bHAhp6B67JUFuiL9sSekrLOw-x2Dp6VsrzhFbOy7e4,9508
|
12
12
|
vellum_cli/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
13
|
vellum_cli/tests/conftest.py,sha256=AFYZryKA2qnUuCPBxBKmHLFoPiE0WhBFFej9tNwSHdc,1526
|
14
14
|
vellum_cli/tests/test_config.py,sha256=uvKGDc8BoVyT9_H0Z-g8469zVxomn6Oi3Zj-vK7O_wU,2631
|
@@ -22,20 +22,20 @@ vellum_ee/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
22
|
vellum_ee/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
23
23
|
vellum_ee/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
24
24
|
vellum_ee/workflows/display/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
25
|
-
vellum_ee/workflows/display/base.py,sha256=
|
25
|
+
vellum_ee/workflows/display/base.py,sha256=EqlQFD56kpqMY02ZBJBQajzJKh33Dwi60Wo779kJlec,2880
|
26
26
|
vellum_ee/workflows/display/editor/__init__.py,sha256=MSAgY91xCEg2neH5d8jXx5wRdR962ftZVa6vO9BGq9k,167
|
27
27
|
vellum_ee/workflows/display/editor/types.py,sha256=x-tOOCJ6CF4HmiKDfCmcc3bOVfc1EBlP5o6u5WEfLoY,567
|
28
28
|
vellum_ee/workflows/display/nodes/__init__.py,sha256=jI1aPBQf8DkmrYoZ4O-wR1duqZByOf5mDFmo_wFJPE4,307
|
29
|
-
vellum_ee/workflows/display/nodes/base_node_display.py,sha256=
|
29
|
+
vellum_ee/workflows/display/nodes/base_node_display.py,sha256=e7agquSClJhamsVo8YX6WcV1PVlUSGD4Lz1feDi-rCw,21235
|
30
30
|
vellum_ee/workflows/display/nodes/base_node_vellum_display.py,sha256=WXbfVoGHTfl_owas2WKHwcRhfLeu0cAI4qLmKxfxjOs,1707
|
31
|
-
vellum_ee/workflows/display/nodes/get_node_display_class.py,sha256=
|
31
|
+
vellum_ee/workflows/display/nodes/get_node_display_class.py,sha256=5QuXpMth0HmZuC-e8LRKOLbrVXSL-ylMR5IWae8eNmc,2113
|
32
32
|
vellum_ee/workflows/display/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
33
|
-
vellum_ee/workflows/display/nodes/tests/test_base_node_display.py,sha256=
|
33
|
+
vellum_ee/workflows/display/nodes/tests/test_base_node_display.py,sha256=YuR3e6ibE_eWDfAJCrooQR3QZGeNRoha1FwpK3hvMh0,2478
|
34
34
|
vellum_ee/workflows/display/nodes/types.py,sha256=St1BB6no528OyELGiyRabWao0GGw6mLhstQAvEACbGk,247
|
35
35
|
vellum_ee/workflows/display/nodes/utils.py,sha256=sloya5TpXsnot1HURc9L51INwflRqUzHxRVnCS9Cd-4,973
|
36
36
|
vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=nUIgH2s0-7IbQRNrBhLPyRNe8YIrx3Yo9HeeW-aXXFk,1668
|
37
37
|
vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=RDsxyubod_zYc72_VaHUTfOZXsgrKv8g3fqZFS2_j8Y,8538
|
38
|
-
vellum_ee/workflows/display/nodes/vellum/base_adornment_node.py,sha256=
|
38
|
+
vellum_ee/workflows/display/nodes/vellum/base_adornment_node.py,sha256=DJb7u3ZgLxwzo7ZxD--DPYDy1FDwKwPxRYBrJ5FT1x0,6452
|
39
39
|
vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=IYx0nll0t-tsPcjfgpfHMZE4FJgMFIsOiaQanGLYF0Q,4410
|
40
40
|
vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=ybLIa4uclqVIy3VAQvI1ivg2tnK5Ug_1R5a69DFqL7E,11104
|
41
41
|
vellum_ee/workflows/display/nodes/vellum/error_node.py,sha256=I1Jkp2htRINJATtv1e-zs9BrReFX842djpiVgBPHDYg,2186
|
@@ -47,59 +47,61 @@ vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=8CPnn06HIBxBOiECevUf
|
|
47
47
|
vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=xtyecs9mJ_WEwVpP12jxYwvehLXynhqLrPJ-Ahdk2GA,3232
|
48
48
|
vellum_ee/workflows/display/nodes/vellum/note_node.py,sha256=DQzzhVGVZf812DkpQZoVYJcDsIOtjkm_sCX3oDLks2Y,1103
|
49
49
|
vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=yAiWMeKs6jEecRdWfTjqxLmnGLeBPguaVsBD7xcOV94,3263
|
50
|
-
vellum_ee/workflows/display/nodes/vellum/retry_node.py,sha256=
|
50
|
+
vellum_ee/workflows/display/nodes/vellum/retry_node.py,sha256=TjBpRERmkmm1myZTWKAxxD1F0dWSc7U1sih8g9sqq2Q,3300
|
51
51
|
vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=Hn55mKO1Q6BBspQtbsurvJJqX7RjSSuEyRjUW29xvg0,9279
|
52
52
|
vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=62baAElKoRKIoba0lLhnrXGWWx96B73VxKGxh7BaIxc,2612
|
53
53
|
vellum_ee/workflows/display/nodes/vellum/templating_node.py,sha256=5EWzdA3TSUPlbJhs4uo1KGH6eGtDXZucVhlUoc_xpl4,3242
|
54
54
|
vellum_ee/workflows/display/nodes/vellum/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
55
|
-
vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py,sha256=
|
56
|
-
vellum_ee/workflows/display/nodes/vellum/tests/test_error_node.py,sha256=
|
57
|
-
vellum_ee/workflows/display/nodes/vellum/tests/test_note_node.py,sha256=
|
58
|
-
vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_node.py,sha256=
|
59
|
-
vellum_ee/workflows/display/nodes/vellum/tests/test_retry_node.py,sha256=
|
60
|
-
vellum_ee/workflows/display/nodes/vellum/tests/test_templating_node.py,sha256=
|
61
|
-
vellum_ee/workflows/display/nodes/vellum/tests/test_try_node.py,sha256=
|
62
|
-
vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py,sha256=
|
63
|
-
vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=
|
64
|
-
vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=
|
55
|
+
vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py,sha256=OoNO-BstB96F-VMK6FZ9aXyi-0wyNePo6HiaJC6SYRw,3880
|
56
|
+
vellum_ee/workflows/display/nodes/vellum/tests/test_error_node.py,sha256=HoIph_rNlHFNBMqBq1a_eyFwPzBIazdH1yQeRhgba14,1510
|
57
|
+
vellum_ee/workflows/display/nodes/vellum/tests/test_note_node.py,sha256=uiMB0cOxKZzos7YKnj4ef4DFa2bOvZJWIv-hfbUV6Go,1218
|
58
|
+
vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_node.py,sha256=6Q6rfEwjjSEgSX24aFZjS3K6l8G2YRYBUNC2o5BE8Tk,6101
|
59
|
+
vellum_ee/workflows/display/nodes/vellum/tests/test_retry_node.py,sha256=h93ysolmbo2viisyhRnXKHPxiDK0I_dSAbYoHFYIoO4,1953
|
60
|
+
vellum_ee/workflows/display/nodes/vellum/tests/test_templating_node.py,sha256=PK7v0AWCgH9gWRfAwGPUGCRLbIH3NSyoAYa9W15ggAo,3321
|
61
|
+
vellum_ee/workflows/display/nodes/vellum/tests/test_try_node.py,sha256=Khjsb53PKpZuyhKoRMgKAL45eGp5hZqXvHmVeQWRw4w,2289
|
62
|
+
vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py,sha256=etCxL19nuJ-bDytH-9a0wHKFoQyBIvocxgTcyo2Cy2Y,4870
|
63
|
+
vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=o6wL17XVm6Wj4sHoJkBW54Y5fY9ZwhD7ry0xkNWRu5c,4106
|
64
|
+
vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=oICunzyaXPs0tYnW5zH1r93Bx35MSH7mcD-n0DEWRok,4978
|
65
65
|
vellum_ee/workflows/display/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
66
|
-
vellum_ee/workflows/display/tests/
|
66
|
+
vellum_ee/workflows/display/tests/test_base_workflow_display.py,sha256=1R9BAjbfRX7tV3hEwDebzUqzzXoFLfZ-f2WI8Bj4oLI,9286
|
67
67
|
vellum_ee/workflows/display/tests/workflow_serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
68
68
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
69
|
-
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py,sha256=
|
70
|
-
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py,sha256=
|
71
|
-
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py,sha256=
|
69
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py,sha256=XOQDDRiG46etxTC7-_RUEutoNumXc02fo7oho4GYM0c,1900
|
70
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py,sha256=ixu_VHgpigvKXj2uQu2_EUn4bkpRy0390LGoRKBJ6iU,15262
|
71
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py,sha256=m9KpVN55_bHiooZOJLm7doRewhcTK53weVYRiglCJX0,19578
|
72
72
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py,sha256=s6_mnk0pkztU59wYpSfOFpMhAJaRjmyfxM6WJGtnD4Y,6456
|
73
73
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py,sha256=PkSgghJDz0fpDB72HHPjLjo8LkZk-HpUkCQzRLX-iVw,40611
|
74
74
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py,sha256=dsJr8I9AdPwMOGszirfNDzZP2Ychd94aAKuPXAzknMk,4632
|
75
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=
|
76
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=
|
77
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=
|
78
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_state_serialization.py,sha256=
|
79
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=
|
80
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py,sha256=
|
81
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=
|
82
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_prompt_node_serialization.py,sha256=
|
83
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=
|
84
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=
|
85
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=
|
86
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py,sha256=
|
87
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py,sha256=
|
88
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py,sha256=
|
89
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py,sha256=
|
90
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py,sha256=
|
91
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=
|
92
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=
|
93
|
-
vellum_ee/workflows/display/types.py,sha256=
|
75
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=h8LANc1wOj5wDzyFYhsn_defoJL7EjIcw5U_dYdjsuM,15794
|
76
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=G4rfMSAttEtxos2ZgVJ0j4a2kqMeKrc1D1FaqYT4vzw,29588
|
77
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=Ofo4pU9dO57UceejBPsTzPDRMR5XkiLqpTiNevDtkCU,47432
|
78
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_state_serialization.py,sha256=3GloR_5CwBYIpIkRNqJ6-AvwXe9acwyjU-xz1yN-Xws,8693
|
79
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=8WnzAu4HceKcIcp-Tdnrkdwq9zC6an5-92khTxNm1uk,5978
|
80
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py,sha256=jSUfw4iSfyu9-Yift1Lb_oBDC1WnD7FwSPnNzPyQlOI,5632
|
81
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=1dLkx5e-rhRQ6Ap0lma4sA_ZGByQW1W9BUwPhvsazjc,7357
|
82
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_prompt_node_serialization.py,sha256=8NiFJLd9vVK8MheYs7TJ3PqYDmtWVXrUNz40E33Y4gA,659
|
83
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=xS7gjdp_ABfXYU89qz6B_i94cKiDivDm2DlQdWgZhQc,20477
|
84
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=EDWp_yXZ67IFv5KMCR7Zzvs7rQ456NtPCR-cdCWwqeQ,16036
|
85
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=aWxEPd6Xsorm36ILyJWMh7UO-bMwYgRc6BciqyYto64,8321
|
86
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py,sha256=G8qjDAKO_-OGEg8dSqs4hp1Pf67RCy7MnecLbZYnsuU,8585
|
87
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py,sha256=gvtlKvMK7U9P6P_sc1nTVcMbDEwaDqBjCxqpsh7tV-U,12919
|
88
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py,sha256=E9UaEdNDG6baHVxg0v7kYHLxiJNVMzPCbVbt4gXBhFw,11194
|
89
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py,sha256=8J-KdCUiC8AgzbRQgT_1t_eWrMOaPSgK3XQfXV_hiE0,7690
|
90
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py,sha256=2MIf-929wze_gDoYSTwZVT74tBi09m2MihtX-EcxFRg,3956
|
91
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=NIq7pa8EBR0ZmhTc3k_akwGuOKih8mwurkyIbc0dNTg,2857
|
92
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=DsWHUyh_GfCvFShbBh7GQnjq5j5NlMc1q_VubE5NikY,7530
|
93
|
+
vellum_ee/workflows/display/types.py,sha256=NKtEGFhvgz1i_oAayXFIS06QZautixnS3id5DckCIjg,2637
|
94
94
|
vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
95
|
+
vellum_ee/workflows/display/utils/exceptions.py,sha256=LSwwxCYNxFkf5XMUcFkaZKpQ13OSrI7y_bpEUwbKVk0,169
|
95
96
|
vellum_ee/workflows/display/utils/expressions.py,sha256=2u2o8Fqr-2C45FII01ej5rt6i8n2EEGiliXugK7buVw,1210
|
96
|
-
vellum_ee/workflows/display/utils/
|
97
|
+
vellum_ee/workflows/display/utils/registry.py,sha256=fWIm5Jj-10gNFjgn34iBu4RWv3Vd15ijtSN0V97bpW8,1513
|
98
|
+
vellum_ee/workflows/display/utils/vellum.py,sha256=VSWB3RA3RWQwQ7nMsU9gLfgpX3_BK9ARBIT36i52r9k,9478
|
97
99
|
vellum_ee/workflows/display/vellum.py,sha256=o7mq_vk2Yapu9DDKRz5l76h8EmCAypWGQYe6pryrbB8,3576
|
98
100
|
vellum_ee/workflows/display/workflows/__init__.py,sha256=kapXsC67VJcgSuiBMa86FdePG5A9kMB5Pi4Uy1O2ob4,207
|
99
|
-
vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=
|
100
|
-
vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=
|
101
|
-
vellum_ee/workflows/display/workflows/tests/test_workflow_display.py,sha256=
|
102
|
-
vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=
|
101
|
+
vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=L91EOajiV3CkaMTwC98QYJpqno-JhUOo_8FYGjT8xFM,32501
|
102
|
+
vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=s6yMO0RxoM8scmfT8TJ-9cwl-WHFe7JSyEJA0alCeEs,1913
|
103
|
+
vellum_ee/workflows/display/workflows/tests/test_workflow_display.py,sha256=uWBMmd_2BlDpymGoo5FB2LBeFQKHmPWJAPvSPZHk94o,11869
|
104
|
+
vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=aaKdmWrgEe5YyV4zuDY_4E3y-l59rIHQnNGiPj2OWxQ,359
|
103
105
|
vellum_ee/workflows/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
104
106
|
vellum_ee/workflows/server/virtual_file_loader.py,sha256=7JphJcSO3H85qiC2DpFfBWjC3JjrbRmoynBC6KKHVsA,2710
|
105
107
|
vellum_ee/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -114,7 +116,7 @@ vellum_ee/workflows/tests/local_workflow/display/__init__.py,sha256=xo75Uqb4aErO
|
|
114
116
|
vellum_ee/workflows/tests/local_workflow/display/nodes/__init__.py,sha256=szW_mgOUriyZ6v1vlnevBgkzNi8g83-ihS98UOLHVcE,155
|
115
117
|
vellum_ee/workflows/tests/local_workflow/display/nodes/final_output.py,sha256=Kv92TCREiZsB9531KZYaBIq83uHn7e_ECw_yAbD1qfk,1017
|
116
118
|
vellum_ee/workflows/tests/local_workflow/display/nodes/templating_node.py,sha256=5cankEe1rDZlXKgILFSPbmN0tUZhIdmcFgz_AguXTJc,1229
|
117
|
-
vellum_ee/workflows/tests/local_workflow/display/workflow.py,sha256=
|
119
|
+
vellum_ee/workflows/tests/local_workflow/display/workflow.py,sha256=ZqOwUFaS6vQAOWRsAq02cno5ULXFKsnXFwWPMfqH8uw,1996
|
118
120
|
vellum_ee/workflows/tests/local_workflow/inputs.py,sha256=4cgsZBoUbIY0Rs8gknC9yqxQ-sSoULclx_SAm1FT2RA,96
|
119
121
|
vellum_ee/workflows/tests/local_workflow/metadata.json,sha256=rdu3h5qkFZiqhCAMxoyoWyMI0O8QALC5-URvSIW6F00,24
|
120
122
|
vellum_ee/workflows/tests/local_workflow/nodes/__init__.py,sha256=1F6jxUpSKfPXPj4ZZKSbnX6Mg-VwF3euLJSZfGn6xkM,127
|
@@ -129,7 +131,7 @@ vellum/client/README.md,sha256=JkCJjmMZl4jrPj46pkmL9dpK4gSzQQmP5I7z4aME4LY,4749
|
|
129
131
|
vellum/client/__init__.py,sha256=Z-JHK2jGxhtTtmkLeOaUGGJWIUNYGNVBLvUewC6lp6w,118148
|
130
132
|
vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
|
131
133
|
vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
|
132
|
-
vellum/client/core/client_wrapper.py,sha256=
|
134
|
+
vellum/client/core/client_wrapper.py,sha256=7bH2-p6hYzfsAz1ScP5muSnO-bbtUPUj3dQ911oa66I,1869
|
133
135
|
vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
134
136
|
vellum/client/core/file.py,sha256=X9IbmkZmB2bB_DpmZAO3crWdXagOakAyn6UCOCImCPg,2322
|
135
137
|
vellum/client/core/http_client.py,sha256=R0pQpCppnEtxccGvXl4uJ76s7ro_65Fo_erlNNLp_AI,19228
|
@@ -1538,7 +1540,7 @@ vellum/workflows/nodes/bases/__init__.py,sha256=cniHuz_RXdJ4TQgD8CBzoiKDiPxg62Er
|
|
1538
1540
|
vellum/workflows/nodes/bases/base.py,sha256=eW-3RSkBgtuGY8x2nmbHYiUg_HXS5U57n3k6Fh-dJ9s,15330
|
1539
1541
|
vellum/workflows/nodes/bases/base_adornment_node.py,sha256=afMwJLHK2Ke7sBpceVLnNdZMlU2O-6UgyG7lBt9SAQ8,3039
|
1540
1542
|
vellum/workflows/nodes/bases/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1541
|
-
vellum/workflows/nodes/bases/tests/test_base_node.py,sha256=
|
1543
|
+
vellum/workflows/nodes/bases/tests/test_base_node.py,sha256=6J85q-vtfG-NHzCndMKLk5_sEEDiI52sTGaxefcUCOU,7892
|
1542
1544
|
vellum/workflows/nodes/core/__init__.py,sha256=5zDMCmyt1v0HTJzlUBwq3U9L825yZGZhT9JL18-mRR4,455
|
1543
1545
|
vellum/workflows/nodes/core/error_node/__init__.py,sha256=g7RRnlHhqu4qByfLjBwCunmgGA8dI5gNsjS3h6TwlSI,60
|
1544
1546
|
vellum/workflows/nodes/core/error_node/node.py,sha256=MFHU5vITYSK-L9CuMZ49In2ZeNLWnhZD0f8r5dWvb5Y,1270
|
@@ -1558,7 +1560,7 @@ vellum/workflows/nodes/core/templating_node/__init__.py,sha256=GmyuYo81_A1_Bz6id
|
|
1558
1560
|
vellum/workflows/nodes/core/templating_node/node.py,sha256=iqBmr2i-f-BqhisNQJiDfewjol0ur7-XpupLStyMJsg,3731
|
1559
1561
|
vellum/workflows/nodes/core/templating_node/tests/test_templating_node.py,sha256=nXkgGDBg4wP36NwykdMEVWwx_xjv8oGT2rYkwuCB_VU,10075
|
1560
1562
|
vellum/workflows/nodes/core/try_node/__init__.py,sha256=JVD4DrldTIqFQQFrubs9KtWCCc0YCAc7Fzol5ZWIWeM,56
|
1561
|
-
vellum/workflows/nodes/core/try_node/node.py,sha256=
|
1563
|
+
vellum/workflows/nodes/core/try_node/node.py,sha256=XdyOvlwQ3m4h0-_WNtaBl2t_CdlzPXclulkLOtUcX3E,4388
|
1562
1564
|
vellum/workflows/nodes/core/try_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1563
1565
|
vellum/workflows/nodes/core/try_node/tests/test_node.py,sha256=h6eUc3SggvhzBWlOD0PrPUlkoCSQHwjqYn81VkxSIxU,4948
|
1564
1566
|
vellum/workflows/nodes/displayable/__init__.py,sha256=6F_4DlSwvHuilWnIalp8iDjjDXl0Nmz4QzJV2PYe5RI,1023
|
@@ -1629,13 +1631,16 @@ vellum/workflows/nodes/experimental/README.md,sha256=eF6DfIL8t-HbF9-mcofOMymKrra
|
|
1629
1631
|
vellum/workflows/nodes/experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1630
1632
|
vellum/workflows/nodes/experimental/openai_chat_completion_node/__init__.py,sha256=lsyD9laR9p7kx5-BXGH2gUTM242UhKy8SMV0SR6S2iE,90
|
1631
1633
|
vellum/workflows/nodes/experimental/openai_chat_completion_node/node.py,sha256=cKI2Ls25L-JVt4z4a2ozQa-YBeVy21Z7BQ32Sj7iBPE,10460
|
1634
|
+
vellum/workflows/nodes/experimental/tool_calling_node/__init__.py,sha256=S7OzT3I4cyOU5Beoz87nPwCejCMP2FsHBFL8OcVmxJ4,118
|
1635
|
+
vellum/workflows/nodes/experimental/tool_calling_node/node.py,sha256=z1hi13Ssya59LL5_hP5UI1qGH_RjUilStxCRLnnxpMI,6064
|
1636
|
+
vellum/workflows/nodes/experimental/tool_calling_node/utils.py,sha256=oK0y3dAupNOzpdTpjcDPxDFtuDfcQeMpD_QcyKD0lTE,4888
|
1632
1637
|
vellum/workflows/nodes/mocks.py,sha256=a1FjWEIocseMfjzM-i8DNozpUsaW0IONRpZmXBoWlyc,10455
|
1633
1638
|
vellum/workflows/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1634
1639
|
vellum/workflows/nodes/tests/test_mocks.py,sha256=mfPvrs75PKcsNsbJLQAN6PDFoVqs9TmQxpdyFKDdO60,7837
|
1635
1640
|
vellum/workflows/nodes/tests/test_utils.py,sha256=qNB6ApIsnFtE_9HDaEah9KD-zX8e10FhDixewS1uRcc,5199
|
1636
|
-
vellum/workflows/nodes/utils.py,sha256=
|
1641
|
+
vellum/workflows/nodes/utils.py,sha256=wVn68jhAQ9ev9LV3c0XEH276CiqcY9-fVgUFY_K9izQ,8409
|
1637
1642
|
vellum/workflows/outputs/__init__.py,sha256=AyZ4pRh_ACQIGvkf0byJO46EDnSix1ZCAXfvh-ms1QE,94
|
1638
|
-
vellum/workflows/outputs/base.py,sha256=
|
1643
|
+
vellum/workflows/outputs/base.py,sha256=1OGHqBJVk7i8cW8uewFWOhIjuMlRRpzCDrGE30ZwDjw,8763
|
1639
1644
|
vellum/workflows/ports/__init__.py,sha256=bZuMt-R7z5bKwpu4uPW7LlJeePOQWmCcDSXe5frUY5g,101
|
1640
1645
|
vellum/workflows/ports/node_ports.py,sha256=g4A-8iUAvEJSkaWppbvzAR8XU02R9U-qLN4rP2Kq4Aw,2743
|
1641
1646
|
vellum/workflows/ports/port.py,sha256=eI2SOZPZ5rsC3jMsxW6Rbn0NpaYQsrR7AapiIbbiy8Q,3635
|
@@ -1648,7 +1653,7 @@ vellum/workflows/references/external_input.py,sha256=c_4SojTpykCSbGS1Pjmx9FfquyY
|
|
1648
1653
|
vellum/workflows/references/input.py,sha256=3INu-TLTi4dziWmva6LO3WvgDlPzsjayUx61cVvqLJA,325
|
1649
1654
|
vellum/workflows/references/lazy.py,sha256=jgUYmgt-yAybzPf_R-74MzdU8VuNwMYI8EQqrj9lVR0,2948
|
1650
1655
|
vellum/workflows/references/node.py,sha256=LP854wDVs-9I_aZ7-nkbwXqL2H7W2_3LED2e9FixNS8,1418
|
1651
|
-
vellum/workflows/references/output.py,sha256
|
1656
|
+
vellum/workflows/references/output.py,sha256=QWrqLGpeo6mFxC_fKmL3LHIfrcDD9SzOhQdHvG99I9Y,3379
|
1652
1657
|
vellum/workflows/references/state_value.py,sha256=bInUF0A3Pt4-zhA0f6LdSuyv8tz7n5QRkHAEn4gsmqI,711
|
1653
1658
|
vellum/workflows/references/tests/test_lazy.py,sha256=0s50-LizMTlSTBQahpK0fg_xqCucA8YTp6QmIMqPvMk,919
|
1654
1659
|
vellum/workflows/references/vellum_secret.py,sha256=Od4d19a5yletWMqNfJR5d_mZQUkVcFzj29mE-T9J7yE,480
|
@@ -1659,12 +1664,12 @@ vellum/workflows/runner/__init__.py,sha256=i1iG5sAhtpdsrlvwgH6B-m49JsINkiWyPWs8v
|
|
1659
1664
|
vellum/workflows/runner/runner.py,sha256=1ozidWAFecR7nfpj_Uw33SBGJVZY54JyU0AA3wySqaA,32826
|
1660
1665
|
vellum/workflows/sandbox.py,sha256=GVJzVjMuYzOBnSrboB0_6MMRZWBluAyQ2o7syeaeBd0,2235
|
1661
1666
|
vellum/workflows/state/__init__.py,sha256=yUUdR-_Vl7UiixNDYQZ-GEM_kJI9dnOia75TtuNEsnE,60
|
1662
|
-
vellum/workflows/state/base.py,sha256=
|
1667
|
+
vellum/workflows/state/base.py,sha256=ZXDmVafs6sExcbx1azrZjEGQsmuY68mSRWfI7t2PT4c,22330
|
1663
1668
|
vellum/workflows/state/context.py,sha256=KOAI1wEGn8dGmhmAemJaf4SZbitP3jpIBcwKfznQaRE,3076
|
1664
1669
|
vellum/workflows/state/encoder.py,sha256=TnOQojc5lTQ83g9QbpA4UCqShJvutmTMxbpKt-9gNe4,1911
|
1665
1670
|
vellum/workflows/state/store.py,sha256=uVe-oN73KwGV6M6YLhwZMMUQhzTQomsVfVnb8V91gVo,1147
|
1666
1671
|
vellum/workflows/state/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1667
|
-
vellum/workflows/state/tests/test_state.py,sha256=
|
1672
|
+
vellum/workflows/state/tests/test_state.py,sha256=YOiC9qZAzkdiqb7nRarNWeDwxo7xHv3y3czlHl81ezg,6741
|
1668
1673
|
vellum/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1669
1674
|
vellum/workflows/tests/test_sandbox.py,sha256=JKwaluI-lODQo7Ek9sjDstjL_WTdSqUlVik6ZVTfVOA,1826
|
1670
1675
|
vellum/workflows/tests/test_undefined.py,sha256=zMCVliCXVNLrlC6hEGyOWDnQADJ2g83yc5FIM33zuo8,353
|
@@ -1672,7 +1677,7 @@ vellum/workflows/types/__init__.py,sha256=KxUTMBGzuRCfiMqzzsykOeVvrrkaZmTTo1a7SL
|
|
1672
1677
|
vellum/workflows/types/core.py,sha256=kMQremh_I8egXpiKmtMQbB6e3OczAWiRnnTq5V6xlD0,928
|
1673
1678
|
vellum/workflows/types/definition.py,sha256=z81CL_u0FJol-9yUIqoXNTYAARtU8x__c6s-f4rb5c8,2335
|
1674
1679
|
vellum/workflows/types/generics.py,sha256=tKXz0LwWJGKw1YGudyl9_yFDrRgU6yYV1yJV1Zv-LTw,1430
|
1675
|
-
vellum/workflows/types/stack.py,sha256=
|
1680
|
+
vellum/workflows/types/stack.py,sha256=h7NE0vXR7l9DevFBIzIAk1Zh59K-kECQtDTKOUunwMY,1314
|
1676
1681
|
vellum/workflows/types/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1677
1682
|
vellum/workflows/types/tests/test_utils.py,sha256=y2bj4O8-ykPRRRocdD98NdnQz6ydSCoMBp6rECPPqE8,2536
|
1678
1683
|
vellum/workflows/types/utils.py,sha256=mSlcgIr8q_qMCtSCdPxcduRntL_5hk4ptFGq3K0EVgw,5801
|
@@ -1688,13 +1693,13 @@ vellum/workflows/utils/uuids.py,sha256=DFzPv9RCvsKhvdTEIQyfSek2A31D6S_QcmeLPbgrg
|
|
1688
1693
|
vellum/workflows/utils/vellum_variables.py,sha256=UiGlUh0a8vel2FbW3w-xbHxSv_jNutkDdqMVtP_b42A,3385
|
1689
1694
|
vellum/workflows/vellum_client.py,sha256=GxOy3dX6A04xiY69vPv1S4YGuQ_TMxwHi6WRMimQBBE,762
|
1690
1695
|
vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
|
1691
|
-
vellum/workflows/workflows/base.py,sha256=
|
1696
|
+
vellum/workflows/workflows/base.py,sha256=j9o6eXueXEwsueNMlZwYP4HhZPQjMgXIgHcRqWHNaDI,23584
|
1692
1697
|
vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnadGsrSZGa7t7LpJA,2008
|
1693
1698
|
vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1694
|
-
vellum/workflows/workflows/tests/test_base_workflow.py,sha256=
|
1699
|
+
vellum/workflows/workflows/tests/test_base_workflow.py,sha256=8P5YIsNMO78_CR1NNK6wkEdkMB4b3Q_Ni1qxh78OnHo,20481
|
1695
1700
|
vellum/workflows/workflows/tests/test_context.py,sha256=VJBUcyWVtMa_lE5KxdhgMu0WYNYnUQUDvTF7qm89hJ0,2333
|
1696
|
-
vellum_ai-0.14.
|
1697
|
-
vellum_ai-0.14.
|
1698
|
-
vellum_ai-0.14.
|
1699
|
-
vellum_ai-0.14.
|
1700
|
-
vellum_ai-0.14.
|
1701
|
+
vellum_ai-0.14.40.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
|
1702
|
+
vellum_ai-0.14.40.dist-info/METADATA,sha256=yhGwwOKSMKxH_eHuWxg_zaUq6v3fWl6mDIXS0jv5acI,5484
|
1703
|
+
vellum_ai-0.14.40.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
1704
|
+
vellum_ai-0.14.40.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
|
1705
|
+
vellum_ai-0.14.40.dist-info/RECORD,,
|
vellum_cli/push.py
CHANGED
@@ -17,7 +17,6 @@ from vellum.workflows.workflows.base import BaseWorkflow
|
|
17
17
|
from vellum_cli.config import DEFAULT_WORKSPACE_CONFIG, WorkflowConfig, WorkflowDeploymentConfig, load_vellum_cli_config
|
18
18
|
from vellum_cli.logger import load_cli_logger
|
19
19
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
20
|
-
from vellum_ee.workflows.display.workflows.vellum_workflow_display import VellumWorkflowDisplay
|
21
20
|
|
22
21
|
|
23
22
|
def push_command(
|
@@ -105,7 +104,6 @@ def push_command(
|
|
105
104
|
# https://app.shortcut.com/vellum/story/5585
|
106
105
|
workflow = BaseWorkflow.load_from_module(workflow_config.module)
|
107
106
|
workflow_display = get_workflow_display(
|
108
|
-
base_display_class=VellumWorkflowDisplay,
|
109
107
|
workflow_class=workflow,
|
110
108
|
dry_run=dry_run or False,
|
111
109
|
)
|
@@ -1,10 +1,12 @@
|
|
1
1
|
from dataclasses import dataclass, field
|
2
2
|
from uuid import UUID
|
3
|
-
from typing import Optional
|
3
|
+
from typing import Optional, Type
|
4
4
|
|
5
5
|
from pydantic import Field
|
6
6
|
|
7
7
|
from vellum.client.core.pydantic_utilities import UniversalBaseModel
|
8
|
+
from vellum.workflows.utils.uuids import uuid4_from_hash
|
9
|
+
from vellum.workflows.workflows.base import BaseWorkflow
|
8
10
|
from vellum_ee.workflows.display.editor.types import NodeDisplayData
|
9
11
|
|
10
12
|
|
@@ -25,6 +27,17 @@ class WorkflowMetaDisplay:
|
|
25
27
|
entrypoint_node_display: NodeDisplayData = Field(default_factory=NodeDisplayData)
|
26
28
|
display_data: WorkflowDisplayData = field(default_factory=WorkflowDisplayData)
|
27
29
|
|
30
|
+
@classmethod
|
31
|
+
def get_default(cls, workflow: Type[BaseWorkflow]) -> "WorkflowMetaDisplay":
|
32
|
+
entrypoint_node_id = uuid4_from_hash(f"{workflow.__id__}|entrypoint_node_id")
|
33
|
+
entrypoint_node_source_handle_id = uuid4_from_hash(f"{workflow.__id__}|entrypoint_node_source_handle_id")
|
34
|
+
|
35
|
+
return WorkflowMetaDisplay(
|
36
|
+
entrypoint_node_id=entrypoint_node_id,
|
37
|
+
entrypoint_node_source_handle_id=entrypoint_node_source_handle_id,
|
38
|
+
entrypoint_node_display=NodeDisplayData(),
|
39
|
+
)
|
40
|
+
|
28
41
|
|
29
42
|
@dataclass
|
30
43
|
class WorkflowMetaDisplayOverrides(WorkflowMetaDisplay):
|
@@ -21,14 +21,31 @@ from vellum.client.types.code_resource_definition import CodeResourceDefinition
|
|
21
21
|
from vellum.workflows import BaseWorkflow
|
22
22
|
from vellum.workflows.constants import undefined
|
23
23
|
from vellum.workflows.descriptors.base import BaseDescriptor
|
24
|
+
from vellum.workflows.expressions.accessor import AccessorExpression
|
25
|
+
from vellum.workflows.expressions.and_ import AndExpression
|
26
|
+
from vellum.workflows.expressions.begins_with import BeginsWithExpression
|
24
27
|
from vellum.workflows.expressions.between import BetweenExpression
|
28
|
+
from vellum.workflows.expressions.coalesce_expression import CoalesceExpression
|
29
|
+
from vellum.workflows.expressions.contains import ContainsExpression
|
30
|
+
from vellum.workflows.expressions.does_not_begin_with import DoesNotBeginWithExpression
|
31
|
+
from vellum.workflows.expressions.does_not_contain import DoesNotContainExpression
|
32
|
+
from vellum.workflows.expressions.does_not_end_with import DoesNotEndWithExpression
|
33
|
+
from vellum.workflows.expressions.ends_with import EndsWithExpression
|
34
|
+
from vellum.workflows.expressions.equals import EqualsExpression
|
35
|
+
from vellum.workflows.expressions.greater_than import GreaterThanExpression
|
36
|
+
from vellum.workflows.expressions.greater_than_or_equal_to import GreaterThanOrEqualToExpression
|
37
|
+
from vellum.workflows.expressions.in_ import InExpression
|
25
38
|
from vellum.workflows.expressions.is_nil import IsNilExpression
|
26
39
|
from vellum.workflows.expressions.is_not_nil import IsNotNilExpression
|
27
40
|
from vellum.workflows.expressions.is_not_null import IsNotNullExpression
|
28
41
|
from vellum.workflows.expressions.is_not_undefined import IsNotUndefinedExpression
|
29
42
|
from vellum.workflows.expressions.is_null import IsNullExpression
|
30
43
|
from vellum.workflows.expressions.is_undefined import IsUndefinedExpression
|
44
|
+
from vellum.workflows.expressions.less_than import LessThanExpression
|
45
|
+
from vellum.workflows.expressions.less_than_or_equal_to import LessThanOrEqualToExpression
|
31
46
|
from vellum.workflows.expressions.not_between import NotBetweenExpression
|
47
|
+
from vellum.workflows.expressions.not_in import NotInExpression
|
48
|
+
from vellum.workflows.expressions.or_ import OrExpression
|
32
49
|
from vellum.workflows.expressions.parse_json import ParseJsonExpression
|
33
50
|
from vellum.workflows.nodes.bases.base import BaseNode
|
34
51
|
from vellum.workflows.nodes.displayable.bases.utils import primitive_to_vellum_value
|
@@ -50,7 +67,9 @@ from vellum.workflows.utils.vellum_variables import primitive_type_to_vellum_var
|
|
50
67
|
from vellum_ee.workflows.display.editor.types import NodeDisplayData
|
51
68
|
from vellum_ee.workflows.display.nodes.get_node_display_class import get_node_display_class
|
52
69
|
from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay, PortDisplay, PortDisplayOverrides
|
70
|
+
from vellum_ee.workflows.display.utils.exceptions import UnsupportedSerializationException
|
53
71
|
from vellum_ee.workflows.display.utils.expressions import get_child_descriptor
|
72
|
+
from vellum_ee.workflows.display.utils.registry import register_node_display_class
|
54
73
|
from vellum_ee.workflows.display.utils.vellum import convert_descriptor_to_operator
|
55
74
|
|
56
75
|
if TYPE_CHECKING:
|
@@ -121,9 +140,6 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
|
|
121
140
|
# Once all nodes are Generic Nodes, we may replace this with a trigger_id or trigger attribute
|
122
141
|
target_handle_id: ClassVar[Optional[UUID]] = None
|
123
142
|
|
124
|
-
# Used to store the mapping between node types and their display classes
|
125
|
-
_node_display_registry: Dict[Type[NodeType], Type["BaseNodeDisplay"]] = {}
|
126
|
-
|
127
143
|
def serialize(self, display_context: "WorkflowDisplayContext", **kwargs: Any) -> JsonObject:
|
128
144
|
node = self._node
|
129
145
|
node_id = self.node_id
|
@@ -149,7 +165,7 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
|
|
149
165
|
adornments = kwargs.get("adornments", None)
|
150
166
|
wrapped_node = get_wrapped_node(node)
|
151
167
|
if wrapped_node is not None:
|
152
|
-
display_class = get_node_display_class(
|
168
|
+
display_class = get_node_display_class(wrapped_node)
|
153
169
|
|
154
170
|
adornment: JsonObject = {
|
155
171
|
"id": str(node_id),
|
@@ -280,10 +296,6 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
|
|
280
296
|
|
281
297
|
return self.get_target_handle_id()
|
282
298
|
|
283
|
-
@classmethod
|
284
|
-
def get_from_node_display_registry(cls, node_class: Type[NodeType]) -> Optional[Type["BaseNodeDisplay"]]:
|
285
|
-
return cls._node_display_registry.get(node_class)
|
286
|
-
|
287
299
|
@cached_property
|
288
300
|
def node_id(self) -> UUID:
|
289
301
|
"""Can be overridden as a class attribute to specify a custom node id."""
|
@@ -344,14 +356,12 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
|
|
344
356
|
|
345
357
|
def __init_subclass__(cls, **kwargs: Any) -> None:
|
346
358
|
super().__init_subclass__(**kwargs)
|
347
|
-
if not cls._node_display_registry:
|
348
|
-
cls._node_display_registry[BaseNode] = BaseNodeDisplay
|
349
359
|
|
350
360
|
node_class = cls.infer_node_class()
|
351
361
|
if node_class is BaseNode:
|
352
362
|
return
|
353
363
|
|
354
|
-
|
364
|
+
register_node_display_class(node_class=node_class, node_display_class=cls)
|
355
365
|
|
356
366
|
def _get_generic_node_display_data(self) -> NodeDisplayData:
|
357
367
|
explicit_value = self._get_explicit_node_display_attr("display_data", NodeDisplayData)
|
@@ -388,9 +398,29 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
|
|
388
398
|
"lhs": lhs,
|
389
399
|
"rhs": rhs,
|
390
400
|
}
|
391
|
-
|
392
|
-
|
393
|
-
|
401
|
+
elif isinstance(
|
402
|
+
condition,
|
403
|
+
(
|
404
|
+
AndExpression,
|
405
|
+
BeginsWithExpression,
|
406
|
+
CoalesceExpression,
|
407
|
+
ContainsExpression,
|
408
|
+
DoesNotBeginWithExpression,
|
409
|
+
DoesNotContainExpression,
|
410
|
+
DoesNotEndWithExpression,
|
411
|
+
EndsWithExpression,
|
412
|
+
EqualsExpression,
|
413
|
+
GreaterThanExpression,
|
414
|
+
GreaterThanOrEqualToExpression,
|
415
|
+
InExpression,
|
416
|
+
LessThanExpression,
|
417
|
+
LessThanOrEqualToExpression,
|
418
|
+
NotInExpression,
|
419
|
+
OrExpression,
|
420
|
+
),
|
421
|
+
):
|
422
|
+
lhs = self.serialize_value(display_context, condition._lhs)
|
423
|
+
rhs = self.serialize_value(display_context, condition._rhs)
|
394
424
|
|
395
425
|
return {
|
396
426
|
"type": "BINARY_EXPRESSION",
|
@@ -398,6 +428,15 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
|
|
398
428
|
"operator": convert_descriptor_to_operator(condition),
|
399
429
|
"rhs": rhs,
|
400
430
|
}
|
431
|
+
elif isinstance(condition, AccessorExpression):
|
432
|
+
return {
|
433
|
+
"type": "BINARY_EXPRESSION",
|
434
|
+
"lhs": self.serialize_value(display_context, condition._base),
|
435
|
+
"operator": "accessField",
|
436
|
+
"rhs": self.serialize_value(display_context, condition._field),
|
437
|
+
}
|
438
|
+
|
439
|
+
raise UnsupportedSerializationException(f"Unsupported condition type: {condition.__class__.__name__}")
|
401
440
|
|
402
441
|
def serialize_value(self, display_context: "WorkflowDisplayContext", value: Any) -> JsonObject:
|
403
442
|
if isinstance(value, ConstantValueReference):
|
@@ -458,3 +497,6 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
|
|
458
497
|
# If it's not any of the references we know about,
|
459
498
|
# then try to serialize it as a nested value
|
460
499
|
return self.serialize_condition(display_context, value)
|
500
|
+
|
501
|
+
|
502
|
+
register_node_display_class(node_class=BaseNode, node_display_class=BaseNodeDisplay)
|