vellum-ai 0.14.65__py3-none-any.whl → 0.14.67__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/README.md +1 -1
- vellum/client/core/client_wrapper.py +1 -1
- vellum/client/reference.md +2767 -0
- vellum/client/types/document_read.py +0 -1
- vellum/client/types/folder_entity_prompt_sandbox_data.py +1 -0
- vellum/client/types/folder_entity_workflow_sandbox_data.py +1 -0
- vellum/workflows/expressions/accessor.py +22 -5
- vellum/workflows/expressions/tests/test_accessor.py +189 -0
- vellum/workflows/nodes/bases/base.py +30 -39
- vellum/workflows/nodes/bases/tests/test_base_node.py +48 -2
- vellum/workflows/nodes/displayable/api_node/node.py +3 -1
- vellum/workflows/nodes/displayable/api_node/tests/test_api_node.py +32 -0
- vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py +28 -0
- vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/test_inline_prompt_node.py +26 -23
- vellum/workflows/nodes/displayable/conditional_node/node.py +1 -2
- vellum/workflows/nodes/displayable/final_output_node/node.py +2 -0
- vellum/workflows/nodes/displayable/inline_prompt_node/node.py +4 -14
- vellum/workflows/nodes/displayable/search_node/node.py +8 -0
- vellum/workflows/nodes/displayable/search_node/tests/test_node.py +19 -0
- vellum/workflows/nodes/experimental/tool_calling_node/utils.py +4 -13
- vellum/workflows/runner/runner.py +13 -17
- vellum/workflows/state/base.py +0 -4
- {vellum_ai-0.14.65.dist-info → vellum_ai-0.14.67.dist-info}/METADATA +2 -2
- {vellum_ai-0.14.65.dist-info → vellum_ai-0.14.67.dist-info}/RECORD +33 -30
- vellum_cli/image_push.py +62 -7
- vellum_cli/pull.py +38 -9
- vellum_cli/tests/test_image_push_error_handling.py +184 -0
- vellum_cli/tests/test_pull.py +12 -9
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_serialization.py +661 -0
- vellum_ee/workflows/display/utils/expressions.py +17 -0
- {vellum_ai-0.14.65.dist-info → vellum_ai-0.14.67.dist-info}/LICENSE +0 -0
- {vellum_ai-0.14.65.dist-info → vellum_ai-0.14.67.dist-info}/WHEEL +0 -0
- {vellum_ai-0.14.65.dist-info → vellum_ai-0.14.67.dist-info}/entry_points.txt +0 -0
@@ -1,3 +1,4 @@
|
|
1
|
+
import pytest
|
1
2
|
import json
|
2
3
|
|
3
4
|
from vellum import SearchResponse, SearchResult, SearchResultDocument
|
@@ -10,6 +11,8 @@ from vellum.client.types.search_weights_request import SearchWeightsRequest
|
|
10
11
|
from vellum.client.types.string_vellum_value_request import StringVellumValueRequest
|
11
12
|
from vellum.client.types.vellum_value_logical_condition_group_request import VellumValueLogicalConditionGroupRequest
|
12
13
|
from vellum.client.types.vellum_value_logical_condition_request import VellumValueLogicalConditionRequest
|
14
|
+
from vellum.workflows.errors import WorkflowErrorCode
|
15
|
+
from vellum.workflows.exceptions import NodeException
|
13
16
|
from vellum.workflows.nodes.displayable.bases.types import (
|
14
17
|
MetadataLogicalCondition,
|
15
18
|
MetadataLogicalConditionGroup,
|
@@ -215,3 +218,19 @@ def test_run_workflow__chat_history_as_query(vellum_client):
|
|
215
218
|
assert json.loads(vellum_client.search.call_args.kwargs["query"]) == [
|
216
219
|
{"role": "USER", "text": "Hello, world!", "source": None, "content": None}
|
217
220
|
]
|
221
|
+
|
222
|
+
|
223
|
+
@pytest.mark.parametrize("invalid_query", [None, ""])
|
224
|
+
def test_run_workflow__invalid_query_raises_validation_error(invalid_query):
|
225
|
+
"""Confirm that missing/None/empty query raises proper user-facing validation error"""
|
226
|
+
|
227
|
+
class MySearchNode(SearchNode):
|
228
|
+
query = invalid_query # type: ignore[assignment]
|
229
|
+
document_index = "document_index"
|
230
|
+
|
231
|
+
with pytest.raises(NodeException) as exc_info:
|
232
|
+
MySearchNode().run()
|
233
|
+
|
234
|
+
assert exc_info.value.code == WorkflowErrorCode.INVALID_INPUTS
|
235
|
+
assert "query" in exc_info.value.message.lower()
|
236
|
+
assert "required" in exc_info.value.message.lower() or "missing" in exc_info.value.message.lower()
|
@@ -15,7 +15,6 @@ from vellum.client.types.string_chat_message_content import StringChatMessageCon
|
|
15
15
|
from vellum.client.types.variable_prompt_block import VariablePromptBlock
|
16
16
|
from vellum.workflows.errors.types import WorkflowErrorCode
|
17
17
|
from vellum.workflows.exceptions import NodeException
|
18
|
-
from vellum.workflows.inputs.base import BaseInputs
|
19
18
|
from vellum.workflows.nodes.bases import BaseNode
|
20
19
|
from vellum.workflows.nodes.displayable.code_execution_node.node import CodeExecutionNode
|
21
20
|
from vellum.workflows.nodes.displayable.inline_prompt_node.node import InlinePromptNode
|
@@ -143,24 +142,16 @@ def create_function_node(
|
|
143
142
|
packages: Optional list of packages to install for code execution (only used for regular functions)
|
144
143
|
runtime: The runtime to use for code execution (default: "PYTHON_3_11_6")
|
145
144
|
"""
|
146
|
-
|
147
145
|
if is_workflow_class(function):
|
148
|
-
|
146
|
+
# Create a class-level wrapper that calls the original function
|
149
147
|
def execute_function(self) -> BaseNode.Outputs:
|
150
148
|
outputs = self.state.meta.node_outputs.get(tool_router_node.Outputs.text)
|
151
|
-
|
149
|
+
|
152
150
|
outputs = json.loads(outputs)
|
153
151
|
arguments = outputs["arguments"]
|
154
152
|
|
155
|
-
#
|
156
|
-
|
157
|
-
"Inputs",
|
158
|
-
(BaseInputs,),
|
159
|
-
{"__annotations__": {k: type(v) for k, v in arguments.items()}},
|
160
|
-
)
|
161
|
-
|
162
|
-
# Create an instance with arguments
|
163
|
-
inputs_instance = Inputs(**arguments)
|
153
|
+
# Call the function based on its type
|
154
|
+
inputs_instance = function.get_inputs_class()(**arguments)
|
164
155
|
|
165
156
|
workflow = function()
|
166
157
|
terminal_event = workflow.run(
|
@@ -398,9 +398,7 @@ class WorkflowRunner(Generic[StateType]):
|
|
398
398
|
return
|
399
399
|
|
400
400
|
for port in ports:
|
401
|
-
nodes_to_fork = []
|
402
401
|
for edge in port.edges:
|
403
|
-
nodes_to_fork.append(edge.to_node)
|
404
402
|
if port.fork_state:
|
405
403
|
next_state = deepcopy(state)
|
406
404
|
self._state_forks.add(next_state)
|
@@ -411,21 +409,6 @@ class WorkflowRunner(Generic[StateType]):
|
|
411
409
|
self._concurrency_queue.put((next_state, edge.to_node, invoked_by))
|
412
410
|
else:
|
413
411
|
self._run_node_if_ready(next_state, edge.to_node, invoked_by)
|
414
|
-
if invoked_by:
|
415
|
-
previous_node = state.meta.node_execution_cache.__node_execution_lookup__.get(invoked_by)
|
416
|
-
if previous_node:
|
417
|
-
previous_node_fork_id = state.meta.node_execution_cache.__node_to_fork_id__.get(previous_node)
|
418
|
-
if previous_node_fork_id:
|
419
|
-
state.meta.node_execution_cache.__node_to_fork_id__[edge.to_node] = previous_node_fork_id
|
420
|
-
# Remove previous node fork in __node_to_fork_id__
|
421
|
-
state.meta.node_execution_cache.__node_to_fork_id__.pop(previous_node, None)
|
422
|
-
|
423
|
-
# If there are multiple edges, we need to create a fork ID
|
424
|
-
if len(nodes_to_fork) > 1:
|
425
|
-
fork_id = uuid4()
|
426
|
-
state.meta.node_execution_cache.__all_fork_ids__.add(fork_id)
|
427
|
-
for node in nodes_to_fork:
|
428
|
-
state.meta.node_execution_cache.__node_to_fork_id__[node] = fork_id
|
429
412
|
|
430
413
|
if self._max_concurrency:
|
431
414
|
num_nodes_to_run = self._max_concurrency - len(self._active_nodes_by_execution_id)
|
@@ -484,6 +467,19 @@ class WorkflowRunner(Generic[StateType]):
|
|
484
467
|
|
485
468
|
if event.name == "node.execution.streaming":
|
486
469
|
for workflow_output_descriptor in self.workflow.Outputs:
|
470
|
+
if node.__directly_emit_workflow_output__(event, workflow_output_descriptor):
|
471
|
+
active_node.was_outputs_streamed = True
|
472
|
+
self._workflow_event_outer_queue.put(
|
473
|
+
self._stream_workflow_event(
|
474
|
+
BaseOutput(
|
475
|
+
name=workflow_output_descriptor.name,
|
476
|
+
value=event.output.value,
|
477
|
+
delta=event.output.delta,
|
478
|
+
)
|
479
|
+
)
|
480
|
+
)
|
481
|
+
return None
|
482
|
+
|
487
483
|
node_output_descriptor = workflow_output_descriptor.instance
|
488
484
|
if not isinstance(node_output_descriptor, OutputReference):
|
489
485
|
continue
|
vellum/workflows/state/base.py
CHANGED
@@ -105,8 +105,6 @@ class NodeExecutionCache:
|
|
105
105
|
|
106
106
|
# Derived fields - no need to serialize
|
107
107
|
__node_execution_lookup__: NodeExecutionLookup # execution_id -> node_class
|
108
|
-
__node_to_fork_id__: Dict[Type["BaseNode"], UUID] # node_class -> fork_id
|
109
|
-
__all_fork_ids__: Set[UUID]
|
110
108
|
|
111
109
|
def __init__(self) -> None:
|
112
110
|
self._dependencies_invoked = defaultdict(set)
|
@@ -114,8 +112,6 @@ class NodeExecutionCache:
|
|
114
112
|
self._node_executions_initiated = defaultdict(set)
|
115
113
|
self._node_executions_queued = defaultdict(list)
|
116
114
|
self.__node_execution_lookup__ = {}
|
117
|
-
self.__node_to_fork_id__ = {}
|
118
|
-
self.__all_fork_ids__ = set()
|
119
115
|
|
120
116
|
@classmethod
|
121
117
|
def deserialize(cls, raw_data: dict, nodes: Dict[Union[str, UUID], Type["BaseNode"]]):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: vellum-ai
|
3
|
-
Version: 0.14.
|
3
|
+
Version: 0.14.67
|
4
4
|
Summary:
|
5
5
|
License: MIT
|
6
6
|
Requires-Python: >=3.9,<4.0
|
@@ -21,7 +21,7 @@ Classifier: Programming Language :: Python :: 3.8
|
|
21
21
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
22
22
|
Classifier: Typing :: Typed
|
23
23
|
Requires-Dist: Jinja2 (>=3.1.0,<4.0.0)
|
24
|
-
Requires-Dist: click (>=8.1.
|
24
|
+
Requires-Dist: click (>=8.1.7,<9.0.0)
|
25
25
|
Requires-Dist: docker (>=7.1.0,<8.0.0)
|
26
26
|
Requires-Dist: httpx (>=0.21.2)
|
27
27
|
Requires-Dist: openai (>=1.0.0,<2.0.0)
|
@@ -3,20 +3,21 @@ vellum_cli/README.md,sha256=2NudRoLzWxNKqnuVy1JuQ7DerIaxWGYkrH8kMd-asIE,90
|
|
3
3
|
vellum_cli/__init__.py,sha256=2_6oGoVcLFUh4L63Kz4SBL4Y6XevJ70oYbg7BJ3cb5Q,12569
|
4
4
|
vellum_cli/aliased_group.py,sha256=ugW498j0yv4ALJ8vS9MsO7ctDW7Jlir9j6nE_uHAP8c,3363
|
5
5
|
vellum_cli/config.py,sha256=v5BmZ-t_v4Jmqd7KVuQMZF2pRI-rbMspSkVYXIRoTmI,9448
|
6
|
-
vellum_cli/image_push.py,sha256=
|
6
|
+
vellum_cli/image_push.py,sha256=mjK3Fj3_MIhIGmurYVz_OC-hCoAef5LqDb0OppKJIJc,9909
|
7
7
|
vellum_cli/init.py,sha256=WpnMXPItPmh0f0bBGIer3p-e5gu8DUGwSArT_FuoMEw,5093
|
8
8
|
vellum_cli/logger.py,sha256=dcM_OmgqXLo93vDYswO5ylyUQQcTfnA5GTd5tbIt3wM,1446
|
9
9
|
vellum_cli/ping.py,sha256=p_BCCRjgPhng6JktuECtkDQLbhopt6JpmrtGoLnLJT8,1161
|
10
|
-
vellum_cli/pull.py,sha256=
|
10
|
+
vellum_cli/pull.py,sha256=udYyPlJ6VKDdh78rApNJOZgxHl82fcV6iGnRPSdX1LY,14750
|
11
11
|
vellum_cli/push.py,sha256=wxRlFu2mYW9SvwODYxwajri1mDQ2be0n-9i0d9QAc30,10194
|
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
|
15
15
|
vellum_cli/tests/test_image_push.py,sha256=QM-JlR_aJappvwbCLteQZZf76sd7SE1sRj3armvFK-I,5706
|
16
|
+
vellum_cli/tests/test_image_push_error_handling.py,sha256=_Wjfkn1orI2K4Ahzqz4u8T13or7NOX01K4BtcTuTIOM,7107
|
16
17
|
vellum_cli/tests/test_init.py,sha256=8UOc_ThfouR4ja5cCl_URuLk7ohr9JXfCnG4yka1OUQ,18754
|
17
18
|
vellum_cli/tests/test_main.py,sha256=qDZG-aQauPwBwM6A2DIu1494n47v3pL28XakTbLGZ-k,272
|
18
19
|
vellum_cli/tests/test_ping.py,sha256=3ucVRThEmTadlV9LrJdCCrr1Ofj3rOjG6ue0BNR2UC0,2523
|
19
|
-
vellum_cli/tests/test_pull.py,sha256=
|
20
|
+
vellum_cli/tests/test_pull.py,sha256=hxMbW_j0weDDrkzVGpvLpFcwNQdn-fxTv4wBHeYizzc,49904
|
20
21
|
vellum_cli/tests/test_push.py,sha256=I8XICg3pUb3yxAFLXziVHHf5CRm354LO-uUfwtca3bU,33897
|
21
22
|
vellum_ee/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
23
|
vellum_ee/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -90,13 +91,14 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_
|
|
90
91
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py,sha256=KkYZc_bZuq1lmDcvUz3QxIqJLpQPCZioD1FHUNsMJY8,11211
|
91
92
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py,sha256=aZaqRDrkO3ytcmdM2eKJqHSt60MF070NMj6M2vgzOKc,7711
|
92
93
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py,sha256=r748dpS13HtwY7t_KQFExFssxRy0xI2d-wxmhiUHRe0,3850
|
94
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_serialization.py,sha256=DzoDdmAwabMTuNu2gCgAyO0KjZxFr9JlkQRz2koUAJ8,46504
|
93
95
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_serialization.py,sha256=Cx3oY6vPVap0xm_mChqfQw4zzR4pqV36o_SyD8g6jPY,8727
|
94
96
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=EL5kfakuoEcwD85dGjhMta-J-PpCHRSDoc80SdbBrQk,2769
|
95
97
|
vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=RmFUDx8dYdfsOE2CGLvdXqNNRtLLpVzXDN8dqZyMcZ8,5822
|
96
98
|
vellum_ee/workflows/display/types.py,sha256=i4T7ElU5b5h-nA1i3scmEhO1BqmNDc4eJDHavATD88w,2821
|
97
99
|
vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
98
100
|
vellum_ee/workflows/display/utils/exceptions.py,sha256=LSwwxCYNxFkf5XMUcFkaZKpQ13OSrI7y_bpEUwbKVk0,169
|
99
|
-
vellum_ee/workflows/display/utils/expressions.py,sha256=
|
101
|
+
vellum_ee/workflows/display/utils/expressions.py,sha256=Y0WMn0V3GjVTJShMSWIe3Z75NzrRfs4_qPytUTiqbhQ,13489
|
100
102
|
vellum_ee/workflows/display/utils/registry.py,sha256=fWIm5Jj-10gNFjgn34iBu4RWv3Vd15ijtSN0V97bpW8,1513
|
101
103
|
vellum_ee/workflows/display/utils/vellum.py,sha256=mtoXmSYwR7rvrq-d6CzCW_auaJXTct0Mi1F0xpRCiNQ,5627
|
102
104
|
vellum_ee/workflows/display/vellum.py,sha256=o7mq_vk2Yapu9DDKRz5l76h8EmCAypWGQYe6pryrbB8,3576
|
@@ -130,11 +132,11 @@ vellum_ee/workflows/tests/test_display_meta.py,sha256=DIzjNbwK1-4mlttPML6NskQ4rP
|
|
130
132
|
vellum_ee/workflows/tests/test_server.py,sha256=SsOkS6sGO7uGC4mxvk4iv8AtcXs058P9hgFHzTWmpII,14519
|
131
133
|
vellum_ee/workflows/tests/test_virtual_files.py,sha256=TJEcMR0v2S8CkloXNmCHA0QW0K6pYNGaIjraJz7sFvY,2762
|
132
134
|
vellum/__init__.py,sha256=U4MVBzBx8I8-rOG_feluSz5U8_hD969e85F4cRgmVv4,42104
|
133
|
-
vellum/client/README.md,sha256=
|
135
|
+
vellum/client/README.md,sha256=CuGUYnaE0Imt0KqQ4sIPaUghCjLHkF3DdEvZWu14-8s,4807
|
134
136
|
vellum/client/__init__.py,sha256=AYopGv2ZRVn3zsU8_km6KOvEHDbXiTPCVuYVI7bWvdA,120166
|
135
137
|
vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
|
136
138
|
vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
|
137
|
-
vellum/client/core/client_wrapper.py,sha256=
|
139
|
+
vellum/client/core/client_wrapper.py,sha256=UG87pjP1tGHRW2I49o0n-MZgePLXL1Ay39COyiMKCSQ,1869
|
138
140
|
vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
139
141
|
vellum/client/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
|
140
142
|
vellum/client/core/http_client.py,sha256=Z77OIxIbL4OAB2IDqjRq_sYa5yNYAWfmdhdCSSvh6Y4,19552
|
@@ -150,7 +152,7 @@ vellum/client/errors/bad_request_error.py,sha256=_EbO8mWqN9kFZPvIap8qa1lL_EWkRcs
|
|
150
152
|
vellum/client/errors/forbidden_error.py,sha256=QO1kKlhClAPES6zsEK7g9pglWnxn3KWaOCAawWOg6Aw,263
|
151
153
|
vellum/client/errors/internal_server_error.py,sha256=8USCagXyJJ1MOm9snpcXIUt6eNXvrd_aq7Gfcu1vlOI,268
|
152
154
|
vellum/client/errors/not_found_error.py,sha256=tBVCeBC8n3C811WHRj_n-hs3h8MqwR5gp0vLiobk7W8,262
|
153
|
-
vellum/client/reference.md,sha256=
|
155
|
+
vellum/client/reference.md,sha256=I-z_aZGJKDQh443ywv92ezeI9w_XsiLh-vHULu8RsDg,91011
|
154
156
|
vellum/client/resources/__init__.py,sha256=XgQao4rJxyYu71j64RFIsshz4op9GE8-i-C5GCv-KVE,1555
|
155
157
|
vellum/client/resources/ad_hoc/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
156
158
|
vellum/client/resources/ad_hoc/client.py,sha256=rtpiGR6j8CcXSnN6UW_jYwLLdfJ9dwkTm_nta9oRzno,25933
|
@@ -288,7 +290,7 @@ vellum/client/types/document_index_indexing_config_request.py,sha256=Wt-ys1o_acH
|
|
288
290
|
vellum/client/types/document_index_read.py,sha256=ePngiRszr65HLl9D0_FUdhAdMe84nRwyM3cKbr8rFpg,1177
|
289
291
|
vellum/client/types/document_processing_state.py,sha256=ISlurj7jQzwHzxPzDZTqeAIgSIIGMBBPgcOSoe04pTU,211
|
290
292
|
vellum/client/types/document_prompt_block.py,sha256=sgFxN48PILFuuF2KUIwks6PbJ3XH6sCE_8ydLEE_doU,1019
|
291
|
-
vellum/client/types/document_read.py,sha256=
|
293
|
+
vellum/client/types/document_read.py,sha256=U3YcFLF9exeZYAhLErEdAc_vVTtWZ8efXDKmmcabshg,1661
|
292
294
|
vellum/client/types/document_status.py,sha256=GD_TSoFmZUBJnPl-chAmaQFzQ2_TYO3PSqi3-9QfEHE,122
|
293
295
|
vellum/client/types/document_vellum_value.py,sha256=a8WQhyntwy80iN9j8L9F5v6Jmq1L4j0ETJo9c9VGabs,768
|
294
296
|
vellum/client/types/document_vellum_value_request.py,sha256=utpoRMMVhMIsa4S4ZOaOr2lX76BgrOVolPxCwy9-pUw,797
|
@@ -329,11 +331,11 @@ vellum/client/types/folder_entity_document_index_data.py,sha256=UceusLf7dLYDHq4Z
|
|
329
331
|
vellum/client/types/folder_entity_folder.py,sha256=1GWfyHdenyAI2GXiouIbnFhPK4ADqZGFh-6fpp_C6-U,792
|
330
332
|
vellum/client/types/folder_entity_folder_data.py,sha256=JLYkhvRY63-ojNY84lfRTaUg25KjslSE-iNAC2NYCTI,674
|
331
333
|
vellum/client/types/folder_entity_prompt_sandbox.py,sha256=7CGVcK5maoqO7CC7sFfi6F5X0QWdHVbEygqLyci_VDY,839
|
332
|
-
vellum/client/types/folder_entity_prompt_sandbox_data.py,sha256=
|
334
|
+
vellum/client/types/folder_entity_prompt_sandbox_data.py,sha256=LMTtOshCdp0MpYHdKtrtBSdpXw9B9id5BfIpkg9SsY4,826
|
333
335
|
vellum/client/types/folder_entity_test_suite.py,sha256=M5sb7ntUX2VsCyD0AYnz7dalt7G1ejOYQZvsUU33q2w,811
|
334
336
|
vellum/client/types/folder_entity_test_suite_data.py,sha256=RGITy3Pip6NeIb77YGavDWgRr8GLFDB9sXrTU_Dm2OI,719
|
335
337
|
vellum/client/types/folder_entity_workflow_sandbox.py,sha256=gFmkwKZGh5O9-9y4w6VGK1IRsKLf7NZ4SCC-pgucm8M,853
|
336
|
-
vellum/client/types/folder_entity_workflow_sandbox_data.py,sha256=
|
338
|
+
vellum/client/types/folder_entity_workflow_sandbox_data.py,sha256=4_kzQSDrFXVJCSF1st73jo0LxKOicn_gE82XAk-QKJI,828
|
337
339
|
vellum/client/types/fulfilled_ad_hoc_execute_prompt_event.py,sha256=19rFjVrzobaaAQhZlP_WGV9f_Rwrz4EPRXbT2aYkaJw,1016
|
338
340
|
vellum/client/types/fulfilled_execute_prompt_event.py,sha256=E-iBwlMWvwQyRfzqPlgtX8KurE3IYsTRd5vWjXtbOmk,994
|
339
341
|
vellum/client/types/fulfilled_execute_prompt_response.py,sha256=nKhDk2ZloCuE0uijX5XOE63_cq8PBo4UWs4hK4e3jUE,1227
|
@@ -1505,7 +1507,7 @@ vellum/workflows/events/types.py,sha256=LwgFlMRbptJvdPtPO1POUtGtbhGw7BSuvgHxNSgS
|
|
1505
1507
|
vellum/workflows/events/workflow.py,sha256=i9JSCANjAhf5uc57gYspdII2V2OLItbc0BfT8yB9mF0,7728
|
1506
1508
|
vellum/workflows/exceptions.py,sha256=NiBiR3ggfmPxBVqD-H1SqmjI-7mIn0EStSN1BqApvCM,1213
|
1507
1509
|
vellum/workflows/expressions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1508
|
-
vellum/workflows/expressions/accessor.py,sha256=
|
1510
|
+
vellum/workflows/expressions/accessor.py,sha256=1kY0sYfednQ_u0kh1Df2WTsDREVIOzU7UuZc5jvj5xw,2861
|
1509
1511
|
vellum/workflows/expressions/and_.py,sha256=I7lNqrUM3-m_5hmjjiMhaHhJtKcLj39kEFVWPDOqwfo,916
|
1510
1512
|
vellum/workflows/expressions/begins_with.py,sha256=FnWsQXbENm0ZwkfEP7dR8Qx4_MMrzj6C1yqAV2KaNHw,1123
|
1511
1513
|
vellum/workflows/expressions/between.py,sha256=dVeddT6YA91eOAlE1Utg7C7gnCiYE7WP-dg17yXUeAY,1492
|
@@ -1535,6 +1537,7 @@ vellum/workflows/expressions/not_in.py,sha256=pFvwkFPsn3WJw61ssFgM2U1dqWEeglfz4F
|
|
1535
1537
|
vellum/workflows/expressions/or_.py,sha256=s-8YdMSSCDS2yijR38kguwok3iqmDMMgDYKV93b4O4s,914
|
1536
1538
|
vellum/workflows/expressions/parse_json.py,sha256=xsk6j3HF7bU1yF6fwt5P9Ugcyd5D9ZXrdng11FRilUI,1088
|
1537
1539
|
vellum/workflows/expressions/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1540
|
+
vellum/workflows/expressions/tests/test_accessor.py,sha256=ijmGjS1pipdurAgYGmfV8Gcle4HIJ5lQHVG18xHjNiQ,5839
|
1538
1541
|
vellum/workflows/expressions/tests/test_expressions.py,sha256=3b6k8xs-CItBBw95NygFLUNoNPKxI4VA1GyWbkMtqyI,11623
|
1539
1542
|
vellum/workflows/expressions/tests/test_parse_json.py,sha256=zpB_qE5_EwWQL7ULQUJm0o1PRSfWZdAqZNW6Ah13oJE,1059
|
1540
1543
|
vellum/workflows/graph/__init__.py,sha256=3sHlay5d_-uD7j3QJXiGl0WHFZZ_QScRvgyDhN2GhHY,74
|
@@ -1548,11 +1551,11 @@ vellum/workflows/inputs/tests/test_inputs.py,sha256=lioA8917mFLYq7Ml69UNkqUjcWbb
|
|
1548
1551
|
vellum/workflows/logging.py,sha256=_a217XogktV4Ncz6xKFz7WfYmZAzkfVRVuC0rWob8ls,437
|
1549
1552
|
vellum/workflows/nodes/__init__.py,sha256=aVdQVv7Y3Ro3JlqXGpxwaU2zrI06plDHD2aumH5WUIs,1157
|
1550
1553
|
vellum/workflows/nodes/bases/__init__.py,sha256=cniHuz_RXdJ4TQgD8CBzoiKDiPxg62ErdVpCbWICX64,58
|
1551
|
-
vellum/workflows/nodes/bases/base.py,sha256=
|
1554
|
+
vellum/workflows/nodes/bases/base.py,sha256=FHZ5_pzN9NJ5Vpj1uo2QP-BzxCtVCUvcDo-taoqmasw,21095
|
1552
1555
|
vellum/workflows/nodes/bases/base_adornment_node.py,sha256=hrgzuTetM4ynPd9YGHoK8Vwwn4XITi3aZZ_OCnQrq4Y,3433
|
1553
1556
|
vellum/workflows/nodes/bases/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1554
1557
|
vellum/workflows/nodes/bases/tests/test_base_adornment_node.py,sha256=fXZI9KqpS4XMBrBnIEkK3foHaBVvyHwYcQWWDKay7ic,1148
|
1555
|
-
vellum/workflows/nodes/bases/tests/test_base_node.py,sha256=
|
1558
|
+
vellum/workflows/nodes/bases/tests/test_base_node.py,sha256=Qk54NIuNa-eAtkq2AVeyl1AjZbotWlqdxTXrlZ3pIe0,10935
|
1556
1559
|
vellum/workflows/nodes/core/__init__.py,sha256=5zDMCmyt1v0HTJzlUBwq3U9L825yZGZhT9JL18-mRR4,455
|
1557
1560
|
vellum/workflows/nodes/core/error_node/__init__.py,sha256=g7RRnlHhqu4qByfLjBwCunmgGA8dI5gNsjS3h6TwlSI,60
|
1558
1561
|
vellum/workflows/nodes/core/error_node/node.py,sha256=MFHU5vITYSK-L9CuMZ49In2ZeNLWnhZD0f8r5dWvb5Y,1270
|
@@ -1577,19 +1580,19 @@ vellum/workflows/nodes/core/try_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW
|
|
1577
1580
|
vellum/workflows/nodes/core/try_node/tests/test_node.py,sha256=h6eUc3SggvhzBWlOD0PrPUlkoCSQHwjqYn81VkxSIxU,4948
|
1578
1581
|
vellum/workflows/nodes/displayable/__init__.py,sha256=6F_4DlSwvHuilWnIalp8iDjjDXl0Nmz4QzJV2PYe5RI,1023
|
1579
1582
|
vellum/workflows/nodes/displayable/api_node/__init__.py,sha256=MoxdQSnidIj1Nf_d-hTxlOxcZXaZnsWFDbE-PkTK24o,56
|
1580
|
-
vellum/workflows/nodes/displayable/api_node/node.py,sha256=
|
1583
|
+
vellum/workflows/nodes/displayable/api_node/node.py,sha256=CjbQJp9tGRgS-ebQqm3eoxmEeeSzrxousIawo3woUYw,2896
|
1581
1584
|
vellum/workflows/nodes/displayable/api_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1582
|
-
vellum/workflows/nodes/displayable/api_node/tests/test_api_node.py,sha256=
|
1585
|
+
vellum/workflows/nodes/displayable/api_node/tests/test_api_node.py,sha256=s7-r3oGKeoQUaJ5w6FY8SXwuiafNpE6nvNT1gNJIBnM,6734
|
1583
1586
|
vellum/workflows/nodes/displayable/bases/__init__.py,sha256=0mWIx3qUrzllV7jqt7wN03vWGMuI1WrrLZeMLT2Cl2c,304
|
1584
1587
|
vellum/workflows/nodes/displayable/bases/api_node/__init__.py,sha256=1jwx4WC358CLA1jgzl_UD-rZmdMm2v9Mps39ndwCD7U,64
|
1585
1588
|
vellum/workflows/nodes/displayable/bases/api_node/node.py,sha256=70pLGU0UzWvSbKwNkx3YlUYrDSkl7MmhVHoI8bzN79c,4343
|
1586
1589
|
vellum/workflows/nodes/displayable/bases/base_prompt_node/__init__.py,sha256=Org3xTvgp1pA0uUXFfnJr29D3HzCey2lEdYF4zbIUgo,70
|
1587
|
-
vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=
|
1590
|
+
vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=ZW3tm5Ka_q39Tp70nMLl1L9aJymbeakxaeuxPwm8bKc,4450
|
1588
1591
|
vellum/workflows/nodes/displayable/bases/inline_prompt_node/__init__.py,sha256=Hl35IAoepRpE-j4cALaXVJIYTYOF3qszyVbxTj4kS1s,82
|
1589
1592
|
vellum/workflows/nodes/displayable/bases/inline_prompt_node/constants.py,sha256=fnjiRWLoRlC4Puo5oQcpZD5Hd-EesxsAo9l5tGAkpZQ,270
|
1590
1593
|
vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=cD2RzOX9WE6xTKgm09dsEw4xHATZbOjeGyYCSdl8fjU,11785
|
1591
1594
|
vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1592
|
-
vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/test_inline_prompt_node.py,sha256=
|
1595
|
+
vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/test_inline_prompt_node.py,sha256=terQtPqLGiKKGtU7zbkM3XkbVddLQI87bBj31M0zaRE,21356
|
1593
1596
|
vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=0a40fkkZkFMmZN0CsWf6EP_y1H6x36EGa3WcfVNyOsM,9797
|
1594
1597
|
vellum/workflows/nodes/displayable/bases/search_node.py,sha256=3UtbqY3QO4kzfJHbmUNZGnEEfJmaoiF892u8H6TGjp8,5381
|
1595
1598
|
vellum/workflows/nodes/displayable/bases/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1604,10 +1607,10 @@ vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/main.py,sh
|
|
1604
1607
|
vellum/workflows/nodes/displayable/code_execution_node/tests/test_node.py,sha256=DRd-nOC04RGjXz-ctxADVq7b-hgdiFN3ZfhK6Ld7J8I,36634
|
1605
1608
|
vellum/workflows/nodes/displayable/code_execution_node/utils.py,sha256=VRTKms59vrSR9mDk99cojParZVAP4lzjEeDwDNXU1tk,3837
|
1606
1609
|
vellum/workflows/nodes/displayable/conditional_node/__init__.py,sha256=AS_EIqFdU1F9t8aLmbZU-rLh9ry6LCJ0uj0D8F0L5Uw,72
|
1607
|
-
vellum/workflows/nodes/displayable/conditional_node/node.py,sha256=
|
1610
|
+
vellum/workflows/nodes/displayable/conditional_node/node.py,sha256=71ZUNfTiD7t2Kai2ypw0tmv1lSf1brQaHAQD-SeUrGE,1101
|
1608
1611
|
vellum/workflows/nodes/displayable/conftest.py,sha256=K2kLM2JGAfcrmmd92u8DXInUO5klFdggPWblg5RVcx4,5729
|
1609
1612
|
vellum/workflows/nodes/displayable/final_output_node/__init__.py,sha256=G7VXM4OWpubvSJtVkGmMNeqgb9GkM7qZT838eL18XU4,72
|
1610
|
-
vellum/workflows/nodes/displayable/final_output_node/node.py,sha256=
|
1613
|
+
vellum/workflows/nodes/displayable/final_output_node/node.py,sha256=AfonKXEoT5kpTo4kVyhgZs0kf-7x7zyg2H2CGlj9eMQ,2410
|
1611
1614
|
vellum/workflows/nodes/displayable/final_output_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1612
1615
|
vellum/workflows/nodes/displayable/final_output_node/tests/test_node.py,sha256=E6LQ74qZjY4Xi4avx2qdOCgGhF8pEcNLBh8cqYRkzMI,709
|
1613
1616
|
vellum/workflows/nodes/displayable/guardrail_node/__init__.py,sha256=Ab5eXmOoBhyV4dMWdzh32HLUmnPIBEK_zFCT38C4Fng,68
|
@@ -1616,7 +1619,7 @@ vellum/workflows/nodes/displayable/guardrail_node/test_node.py,sha256=SAGv6hSFcB
|
|
1616
1619
|
vellum/workflows/nodes/displayable/guardrail_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1617
1620
|
vellum/workflows/nodes/displayable/guardrail_node/tests/test_node.py,sha256=X2pd6TI8miYxIa7rgvs1pHTEreyWcf77EyR0_Jsa700,2055
|
1618
1621
|
vellum/workflows/nodes/displayable/inline_prompt_node/__init__.py,sha256=gSUOoEZLlrx35-tQhSAd3An8WDwBqyiQh-sIebLU9wU,74
|
1619
|
-
vellum/workflows/nodes/displayable/inline_prompt_node/node.py,sha256=
|
1622
|
+
vellum/workflows/nodes/displayable/inline_prompt_node/node.py,sha256=ST_V1Z3-7lzZ__Ntfm6iry70u9D3GD2a2vxsl2d4Q_c,2843
|
1620
1623
|
vellum/workflows/nodes/displayable/inline_prompt_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1621
1624
|
vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py,sha256=bBHs90mV5SZ3rJPAL0wx4WWyawUA406LgMPOdvpZC_A,10923
|
1622
1625
|
vellum/workflows/nodes/displayable/merge_node/__init__.py,sha256=J8IC08dSH7P76wKlNuxe1sn7toNGtSQdFirUbtPDEs0,60
|
@@ -1628,9 +1631,9 @@ vellum/workflows/nodes/displayable/prompt_deployment_node/node.py,sha256=eUiQYdq
|
|
1628
1631
|
vellum/workflows/nodes/displayable/prompt_deployment_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1629
1632
|
vellum/workflows/nodes/displayable/prompt_deployment_node/tests/test_node.py,sha256=c_nuuqrwiIjgj4qIbVypfDuOc-3TlgO6CbXFqQl2Nqw,19725
|
1630
1633
|
vellum/workflows/nodes/displayable/search_node/__init__.py,sha256=hpBpvbrDYf43DElRZFLzieSn8weXiwNiiNOJurERQbs,62
|
1631
|
-
vellum/workflows/nodes/displayable/search_node/node.py,sha256=
|
1634
|
+
vellum/workflows/nodes/displayable/search_node/node.py,sha256=1dGCB1kb7MvX3fUJ5zP__Bh02mdPdRRsx_vwGyQFBVc,1981
|
1632
1635
|
vellum/workflows/nodes/displayable/search_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1633
|
-
vellum/workflows/nodes/displayable/search_node/tests/test_node.py,sha256=
|
1636
|
+
vellum/workflows/nodes/displayable/search_node/tests/test_node.py,sha256=WVZR3BI_CvxBG9hulv0-tcAc_gW5ozs0nH4uVNRJa2U,8863
|
1634
1637
|
vellum/workflows/nodes/displayable/subworkflow_deployment_node/__init__.py,sha256=9yYM6001YZeqI1VOk1QuEM_yrffk_EdsO7qaPzINKds,92
|
1635
1638
|
vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=lq8_USZkNiYktH0oJSW2jOuXyRtVwVoq1CKFdCek5-M,9719
|
1636
1639
|
vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1646,7 +1649,7 @@ vellum/workflows/nodes/experimental/openai_chat_completion_node/node.py,sha256=c
|
|
1646
1649
|
vellum/workflows/nodes/experimental/tool_calling_node/__init__.py,sha256=S7OzT3I4cyOU5Beoz87nPwCejCMP2FsHBFL8OcVmxJ4,118
|
1647
1650
|
vellum/workflows/nodes/experimental/tool_calling_node/node.py,sha256=FkhaJccpCbx2be_IZ5V2v6Lo-jPJ0WgSC5tveLvAW4A,5774
|
1648
1651
|
vellum/workflows/nodes/experimental/tool_calling_node/tests/test_node.py,sha256=sxG26mOwt4N36RLoPJ-ngginPqC5qFzD_kGj9izdCFI,1833
|
1649
|
-
vellum/workflows/nodes/experimental/tool_calling_node/utils.py,sha256=
|
1652
|
+
vellum/workflows/nodes/experimental/tool_calling_node/utils.py,sha256=vB-tdN-44iVrTFvwGLVZW3dv62imIp5fPo0FYCW0l3M,9815
|
1650
1653
|
vellum/workflows/nodes/mocks.py,sha256=a1FjWEIocseMfjzM-i8DNozpUsaW0IONRpZmXBoWlyc,10455
|
1651
1654
|
vellum/workflows/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1652
1655
|
vellum/workflows/nodes/tests/test_mocks.py,sha256=mfPvrs75PKcsNsbJLQAN6PDFoVqs9TmQxpdyFKDdO60,7837
|
@@ -1674,10 +1677,10 @@ vellum/workflows/references/workflow_input.py,sha256=W3rOK1EPd2gYHb04WJwmNm1CUSd
|
|
1674
1677
|
vellum/workflows/resolvers/__init__.py,sha256=eH6hTvZO4IciDaf_cf7aM2vs-DkBDyJPycOQevJxQnI,82
|
1675
1678
|
vellum/workflows/resolvers/base.py,sha256=WHra9LRtlTuB1jmuNqkfVE2JUgB61Cyntn8f0b0WZg4,411
|
1676
1679
|
vellum/workflows/runner/__init__.py,sha256=i1iG5sAhtpdsrlvwgH6B-m49JsINkiWyPWs8vyT-bqM,72
|
1677
|
-
vellum/workflows/runner/runner.py,sha256=
|
1680
|
+
vellum/workflows/runner/runner.py,sha256=j2LGHb4fDWR1pB__C1efIMxptq_C49fcOpz893bQHVQ,33645
|
1678
1681
|
vellum/workflows/sandbox.py,sha256=GVJzVjMuYzOBnSrboB0_6MMRZWBluAyQ2o7syeaeBd0,2235
|
1679
1682
|
vellum/workflows/state/__init__.py,sha256=yUUdR-_Vl7UiixNDYQZ-GEM_kJI9dnOia75TtuNEsnE,60
|
1680
|
-
vellum/workflows/state/base.py,sha256=
|
1683
|
+
vellum/workflows/state/base.py,sha256=WIMJYyuHUrP4zt0Nudk66HAK1L6GgGmsU_GQp7BGE2U,22189
|
1681
1684
|
vellum/workflows/state/context.py,sha256=KOAI1wEGn8dGmhmAemJaf4SZbitP3jpIBcwKfznQaRE,3076
|
1682
1685
|
vellum/workflows/state/encoder.py,sha256=8NPQ8iz5qJeT5fafnZ2Pko98b-FtTjsgMNV4Zi3g2bE,2438
|
1683
1686
|
vellum/workflows/state/store.py,sha256=uVe-oN73KwGV6M6YLhwZMMUQhzTQomsVfVnb8V91gVo,1147
|
@@ -1712,8 +1715,8 @@ vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnad
|
|
1712
1715
|
vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1713
1716
|
vellum/workflows/workflows/tests/test_base_workflow.py,sha256=fROqff6AZpCIzaSwOKSdtYy4XR0UZQ6ejxL3RJOSJVs,20447
|
1714
1717
|
vellum/workflows/workflows/tests/test_context.py,sha256=VJBUcyWVtMa_lE5KxdhgMu0WYNYnUQUDvTF7qm89hJ0,2333
|
1715
|
-
vellum_ai-0.14.
|
1716
|
-
vellum_ai-0.14.
|
1717
|
-
vellum_ai-0.14.
|
1718
|
-
vellum_ai-0.14.
|
1719
|
-
vellum_ai-0.14.
|
1718
|
+
vellum_ai-0.14.67.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
|
1719
|
+
vellum_ai-0.14.67.dist-info/METADATA,sha256=Db8ryoXbUKuF3JFftIoP1q6KRkDfnDJfmBGl1tg5nUA,5556
|
1720
|
+
vellum_ai-0.14.67.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
1721
|
+
vellum_ai-0.14.67.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
|
1722
|
+
vellum_ai-0.14.67.dist-info/RECORD,,
|
vellum_cli/image_push.py
CHANGED
@@ -9,9 +9,10 @@ import docker
|
|
9
9
|
from docker import DockerClient
|
10
10
|
from dotenv import load_dotenv
|
11
11
|
|
12
|
+
from vellum.client.core.api_error import ApiError
|
12
13
|
from vellum.workflows.vellum_client import create_vellum_client, create_vellum_environment
|
13
14
|
from vellum_cli.config import DEFAULT_WORKSPACE_CONFIG, load_vellum_cli_config
|
14
|
-
from vellum_cli.logger import load_cli_logger
|
15
|
+
from vellum_cli.logger import handle_cli_error, load_cli_logger
|
15
16
|
|
16
17
|
_SUPPORTED_ARCHITECTURE = "amd64"
|
17
18
|
|
@@ -82,7 +83,34 @@ def image_push_command(image: str, tags: Optional[List[str]] = None, workspace:
|
|
82
83
|
exit(1)
|
83
84
|
else:
|
84
85
|
logger.info("Authenticating...")
|
85
|
-
|
86
|
+
try:
|
87
|
+
auth = vellum_client.container_images.docker_service_token()
|
88
|
+
except ApiError as e:
|
89
|
+
if e.status_code == 401 or e.status_code == 403:
|
90
|
+
handle_cli_error(
|
91
|
+
logger,
|
92
|
+
title="Authentication failed",
|
93
|
+
message="Unable to authenticate with Vellum API. Please check your API key.",
|
94
|
+
suggestion="Make sure your VELLUM_API_KEY environment variable is set correctly.",
|
95
|
+
)
|
96
|
+
return
|
97
|
+
elif e.status_code == 500:
|
98
|
+
handle_cli_error(
|
99
|
+
logger,
|
100
|
+
title="Server error",
|
101
|
+
message="The Vellum API failed with an unexpected server error.",
|
102
|
+
suggestion="Please try again later and contact support if the problem persists.",
|
103
|
+
)
|
104
|
+
return
|
105
|
+
else:
|
106
|
+
handle_cli_error(
|
107
|
+
logger,
|
108
|
+
title="API request failed",
|
109
|
+
message=f"Failed to get Docker service token from Vellum API (HTTP {e.status_code}).",
|
110
|
+
suggestion="Please check your configuration and try again. If the problem persists, "
|
111
|
+
"contact support.",
|
112
|
+
)
|
113
|
+
return
|
86
114
|
|
87
115
|
docker_client.login(
|
88
116
|
username="oauth2accesstoken",
|
@@ -143,11 +171,38 @@ def image_push_command(image: str, tags: Optional[List[str]] = None, workspace:
|
|
143
171
|
|
144
172
|
logger.info(f"Updating Vellum metadata and validating image works in our system with image digest: {sha}...")
|
145
173
|
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
174
|
+
try:
|
175
|
+
vellum_client.container_images.push_container_image(
|
176
|
+
name=image_name,
|
177
|
+
sha=sha,
|
178
|
+
tags=all_tags,
|
179
|
+
)
|
180
|
+
except ApiError as e:
|
181
|
+
if e.status_code == 401 or e.status_code == 403:
|
182
|
+
handle_cli_error(
|
183
|
+
logger,
|
184
|
+
title="Authentication failed",
|
185
|
+
message="Unable to push container image metadata to Vellum API. Please check your API key.",
|
186
|
+
suggestion="Make sure your VELLUM_API_KEY environment variable is set correctly.",
|
187
|
+
)
|
188
|
+
return
|
189
|
+
elif e.status_code == 500:
|
190
|
+
handle_cli_error(
|
191
|
+
logger,
|
192
|
+
title="Server error",
|
193
|
+
message="The Vellum API failed with an unexpected server error while pushing container image metadata.",
|
194
|
+
suggestion="Please try again later and contact support if the problem persists.",
|
195
|
+
)
|
196
|
+
return
|
197
|
+
else:
|
198
|
+
handle_cli_error(
|
199
|
+
logger,
|
200
|
+
title="API request failed",
|
201
|
+
message=f"Failed to push container image metadata to Vellum API (HTTP {e.status_code}).",
|
202
|
+
suggestion="Please check your configuration and try again. If the problem persists, contact support.",
|
203
|
+
)
|
204
|
+
return
|
205
|
+
|
151
206
|
logger.info(f"Image successfully pushed as {image_name} to vellum with tags: {all_tags}.")
|
152
207
|
|
153
208
|
|
vellum_cli/pull.py
CHANGED
@@ -20,7 +20,7 @@ from vellum_cli.config import (
|
|
20
20
|
WorkflowDeploymentConfig,
|
21
21
|
load_vellum_cli_config,
|
22
22
|
)
|
23
|
-
from vellum_cli.logger import load_cli_logger
|
23
|
+
from vellum_cli.logger import handle_cli_error, load_cli_logger
|
24
24
|
|
25
25
|
ERROR_LOG_FILE_NAME = "error.log"
|
26
26
|
METADATA_FILE_NAME = "metadata.json"
|
@@ -201,16 +201,42 @@ def pull_command(
|
|
201
201
|
zip_bytes = b"".join(response)
|
202
202
|
except ApiError as e:
|
203
203
|
if e.status_code == 401 or e.status_code == 403:
|
204
|
-
|
204
|
+
handle_cli_error(
|
205
|
+
logger,
|
206
|
+
title="Authentication failed",
|
207
|
+
message="Unable to authenticate with the Vellum API.",
|
208
|
+
suggestion="Please make sure your `VELLUM_API_KEY` environment variable is set correctly and that you have access to this workflow.", # noqa: E501
|
209
|
+
)
|
210
|
+
|
211
|
+
if e.status_code == 404:
|
212
|
+
handle_cli_error(
|
213
|
+
logger,
|
214
|
+
title="Workflow not found",
|
215
|
+
message=f"The workflow with ID '{pk}' could not be found.",
|
216
|
+
suggestion="Please verify the workflow ID is correct and that you have access to it in your workspace.",
|
217
|
+
)
|
205
218
|
|
206
219
|
if e.status_code == 500:
|
207
|
-
|
208
|
-
|
220
|
+
handle_cli_error(
|
221
|
+
logger,
|
222
|
+
title="Server error occurred",
|
223
|
+
message="The Vellum API encountered an internal server error while processing your request.",
|
224
|
+
suggestion="Please try again in a few moments. If the problem persists, contact Vellum support with the workflow ID and timestamp.", # noqa: E501
|
225
|
+
)
|
226
|
+
|
227
|
+
if e.status_code == 502 or e.status_code == 503 or e.status_code == 504:
|
228
|
+
handle_cli_error(
|
229
|
+
logger,
|
230
|
+
title="Service temporarily unavailable",
|
231
|
+
message="The Vellum API is temporarily unavailable or experiencing high load.",
|
232
|
+
suggestion="Please wait a moment and try again. If the issue continues, check the Vellum status page or contact support.", # noqa: E501
|
209
233
|
)
|
210
234
|
|
211
|
-
|
212
|
-
|
213
|
-
"
|
235
|
+
handle_cli_error(
|
236
|
+
logger,
|
237
|
+
title="API request failed",
|
238
|
+
message=f"The API request failed with status code {e.status_code}.",
|
239
|
+
suggestion="Please verify your `VELLUM_API_URL` environment variable is set correctly and try again.",
|
214
240
|
)
|
215
241
|
|
216
242
|
zip_buffer = io.BytesIO(zip_bytes)
|
@@ -299,8 +325,11 @@ def pull_command(
|
|
299
325
|
logger.info(f"Writing to {target_file}...")
|
300
326
|
target.write(content)
|
301
327
|
except zipfile.BadZipFile:
|
302
|
-
|
303
|
-
|
328
|
+
handle_cli_error(
|
329
|
+
logger,
|
330
|
+
title="Invalid response format",
|
331
|
+
message="The API returned an invalid zip file format.",
|
332
|
+
suggestion="Please verify your `VELLUM_API_URL` environment variable is set correctly and try again.",
|
304
333
|
)
|
305
334
|
|
306
335
|
if include_json:
|