vellum-ai 0.10.0__py3-none-any.whl → 0.10.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. vellum/__init__.py +8 -0
  2. vellum/client/README.md +1 -1
  3. vellum/client/__init__.py +4 -0
  4. vellum/client/core/client_wrapper.py +1 -1
  5. vellum/client/resources/__init__.py +2 -0
  6. vellum/client/resources/deployments/client.py +117 -0
  7. vellum/client/resources/ml_models/__init__.py +2 -0
  8. vellum/client/resources/ml_models/client.py +125 -0
  9. vellum/client/resources/workflow_deployments/client.py +117 -0
  10. vellum/client/types/__init__.py +6 -0
  11. vellum/client/types/deployment_history_item.py +44 -0
  12. vellum/client/types/ml_model_read.py +27 -0
  13. vellum/client/types/workflow_deployment_history_item.py +45 -0
  14. vellum/resources/ml_models/__init__.py +3 -0
  15. vellum/resources/ml_models/client.py +3 -0
  16. vellum/types/deployment_history_item.py +3 -0
  17. vellum/types/ml_model_read.py +3 -0
  18. vellum/types/workflow_deployment_history_item.py +3 -0
  19. vellum/workflows/nodes/__init__.py +4 -3
  20. vellum/workflows/nodes/core/__init__.py +2 -0
  21. vellum/workflows/nodes/displayable/bases/search_node.py +10 -3
  22. vellum/workflows/nodes/displayable/search_node/node.py +12 -5
  23. vellum/workflows/references/execution_count.py +4 -0
  24. {vellum_ai-0.10.0.dist-info → vellum_ai-0.10.2.dist-info}/METADATA +3 -3
  25. {vellum_ai-0.10.0.dist-info → vellum_ai-0.10.2.dist-info}/RECORD +36 -25
  26. vellum_cli/__init__.py +3 -2
  27. vellum_cli/pull.py +17 -4
  28. vellum_cli/tests/test_pull.py +18 -0
  29. vellum_ee/py.typed +0 -0
  30. vellum_ee/workflows/display/nodes/vellum/conditional_node.py +20 -2
  31. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py +148 -42
  32. vellum_ee/workflows/display/utils/vellum.py +16 -11
  33. vellum_ee/workflows/display/vellum.py +10 -1
  34. {vellum_ai-0.10.0.dist-info → vellum_ai-0.10.2.dist-info}/LICENSE +0 -0
  35. {vellum_ai-0.10.0.dist-info → vellum_ai-0.10.2.dist-info}/WHEEL +0 -0
  36. {vellum_ai-0.10.0.dist-info → vellum_ai-0.10.2.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,45 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from __future__ import annotations
4
+ from ..core.pydantic_utilities import UniversalBaseModel
5
+ from .array_vellum_value import ArrayVellumValue
6
+ import datetime as dt
7
+ import pydantic
8
+ import typing
9
+ from .vellum_variable import VellumVariable
10
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
11
+ from ..core.pydantic_utilities import update_forward_refs
12
+
13
+
14
+ class WorkflowDeploymentHistoryItem(UniversalBaseModel):
15
+ id: str
16
+ workflow_deployment_id: str
17
+ timestamp: dt.datetime
18
+ label: str = pydantic.Field()
19
+ """
20
+ A human-readable label for the workflow deployment
21
+ """
22
+
23
+ name: str = pydantic.Field()
24
+ """
25
+ A name that uniquely identifies this workflow deployment within its workspace
26
+ """
27
+
28
+ input_variables: typing.List[VellumVariable]
29
+ output_variables: typing.List[VellumVariable]
30
+ description: typing.Optional[str] = pydantic.Field(default=None)
31
+ """
32
+ A human-readable description of the workflow deployment
33
+ """
34
+
35
+ if IS_PYDANTIC_V2:
36
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
37
+ else:
38
+
39
+ class Config:
40
+ frozen = True
41
+ smart_union = True
42
+ extra = pydantic.Extra.allow
43
+
44
+
45
+ update_forward_refs(ArrayVellumValue, WorkflowDeploymentHistoryItem=WorkflowDeploymentHistoryItem)
@@ -0,0 +1,3 @@
1
+ # WARNING: This file will be removed in a future release. Please import from "vellum.client" instead.
2
+
3
+ from vellum.client.resources.ml_models import *
@@ -0,0 +1,3 @@
1
+ # WARNING: This file will be removed in a future release. Please import from "vellum.client" instead.
2
+
3
+ from vellum.client.resources.ml_models.client import *
@@ -0,0 +1,3 @@
1
+ # WARNING: This file will be removed in a future release. Please import from "vellum.client" instead.
2
+
3
+ from vellum.client.types.deployment_history_item import *
@@ -0,0 +1,3 @@
1
+ # WARNING: This file will be removed in a future release. Please import from "vellum.client" instead.
2
+
3
+ from vellum.client.types.ml_model_read import *
@@ -0,0 +1,3 @@
1
+ # WARNING: This file will be removed in a future release. Please import from "vellum.client" instead.
2
+
3
+ from vellum.client.types.workflow_deployment_history_item import *
@@ -1,5 +1,5 @@
1
1
  from vellum.workflows.nodes.bases import BaseNode
2
- from vellum.workflows.nodes.core import ErrorNode, InlineSubworkflowNode, MapNode, RetryNode, TemplatingNode
2
+ from vellum.workflows.nodes.core import (ErrorNode, InlineSubworkflowNode, MapNode, RetryNode, TemplatingNode, TryNode,)
3
3
  from vellum.workflows.nodes.displayable import (
4
4
  APINode,
5
5
  CodeExecutionNode,
@@ -26,11 +26,12 @@ __all__ = [
26
26
  "MapNode",
27
27
  "RetryNode",
28
28
  "TemplatingNode",
29
- # Vellum Base Nodes
29
+ "TryNode",
30
+ # Displayable Base Nodes
30
31
  "BaseSearchNode",
31
32
  "BaseInlinePromptNode",
32
33
  "BasePromptDeploymentNode",
33
- # Vellum Nodes
34
+ # Displayable Nodes
34
35
  "APINode",
35
36
  "CodeExecutionNode",
36
37
  "GuardrailNode",
@@ -5,6 +5,7 @@ from .inline_subworkflow_node import InlineSubworkflowNode
5
5
  from .map_node import MapNode
6
6
  from .retry_node import RetryNode
7
7
  from .templating_node import TemplatingNode
8
+ from .try_node import TryNode
8
9
 
9
10
  __all__ = [
10
11
  "BaseAPINode",
@@ -13,4 +14,5 @@ __all__ = [
13
14
  "MapNode",
14
15
  "RetryNode",
15
16
  "TemplatingNode",
17
+ "TryNode",
16
18
  ]
@@ -31,9 +31,10 @@ class BaseSearchNode(BaseNode[StateType], Generic[StateType]):
31
31
  """
32
32
  Used to perform a hybrid search against a Document Index in Vellum.
33
33
 
34
- document_index: Union[UUID, str] - Either the Document Index's UUID or its name.
35
- query: str - The query to search for.
36
- options: Optional[SearchRequestOptionsRequest] = None - The request options to use for the search
34
+ document_index: Union[UUID, str] - Either the UUID or name of the Vellum Document Index that you'd like to search
35
+ against
36
+ query: str - The query to search for
37
+ options: Optional[SearchRequestOptionsRequest] = None - Runtime configuration for the search
37
38
  request_options: Optional[RequestOptions] = None - The request options to use for the search
38
39
  """
39
40
 
@@ -64,6 +65,12 @@ class BaseSearchNode(BaseNode[StateType], Generic[StateType]):
64
65
  request_options: Optional[RequestOptions] = None
65
66
 
66
67
  class Outputs(BaseOutputs):
68
+ """
69
+ The outputs of the SearchNode.
70
+
71
+ results: List[SearchResult] - The raw search results
72
+ """
73
+
67
74
  results: List[SearchResult]
68
75
 
69
76
  def _perform_search(self) -> SearchResponse:
@@ -6,18 +6,25 @@ from vellum.workflows.types.generics import StateType
6
6
 
7
7
  class SearchNode(BaseSearchNode[StateType]):
8
8
  """
9
- A SearchNode that outputs the text of the search results concatenated as a single string.
9
+ Used to perform a hybrid search against a Document Index in Vellum.
10
10
 
11
- document_index: Union[UUID, str] - Either the Document Index's UUID or its name.
12
- query: str - The query to search for.
13
- options: Optional[SearchRequestOptionsRequest] = None - The request options to use for the search
11
+ document_index: Union[UUID, str] - Either the UUID or name of the Vellum Document Index that you'd like to search
12
+ against
13
+ query: str - The query to search for
14
+ options: Optional[SearchRequestOptionsRequest] = None - Runtime configuration for the search
14
15
  request_options: Optional[RequestOptions] = None - The request options to use for the search
15
- chunk_separator: str = "\n\n#####\n\n" - Used to separate the text of each search result.
16
+ chunk_separator: str = "\n\n#####\n\n" - The separator to use when joining the text of each search result
16
17
  """
17
18
 
18
19
  chunk_separator: ClassVar[str] = "\n\n#####\n\n"
19
20
 
20
21
  class Outputs(BaseSearchNode.Outputs):
22
+ """
23
+ The outputs of the SearchNode.
24
+
25
+ results: List[SearchResult] - The raw search results
26
+ text: str - The text of the search results joined by the chunk_separator
27
+ """
21
28
  text: str
22
29
 
23
30
  def run(self) -> Outputs:
@@ -18,3 +18,7 @@ class ExecutionCountReference(BaseDescriptor[int]):
18
18
 
19
19
  def resolve(self, state: "BaseState") -> int:
20
20
  return state.meta.node_execution_cache.get_execution_count(self._node_class)
21
+
22
+ @property
23
+ def node_class(self) -> Type["BaseNode"]:
24
+ return self._node_class
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vellum-ai
3
- Version: 0.10.0
3
+ Version: 0.10.2
4
4
  Summary:
5
5
  License: MIT
6
6
  Requires-Python: >=3.9,<4.0
@@ -97,7 +97,7 @@ more below](#workflows-sdk).
97
97
 
98
98
  ## Client SDK
99
99
  The Vellum Client SDK, found within `src/client` is a low-level client used to interact directly with the Vellum API.
100
- Learn more and get started by visiting the [Vellum Client SDK README](/src/client/README.md).
100
+ Learn more and get started by visiting the [Vellum Client SDK README](/src/vellum/client/README.md).
101
101
 
102
102
 
103
103
  ## Workflows SDK
@@ -109,7 +109,7 @@ The Workflows SDK can be used with or without a Vellum account, but a Vellum acc
109
109
  out-of-box nodes and features, including the ability to push and pull your Workflow definition to Vellum for editing
110
110
  and debugging via a UI.
111
111
 
112
- To learn more and get started, visit the [Vellum Workflows SDK README](/src/workflows/README.md).
112
+ To learn more and get started, visit the [Vellum Workflows SDK README](/src/vellum/workflows/README.md).
113
113
 
114
114
 
115
115
  ## Open-Source vs. Paid
@@ -1,13 +1,14 @@
1
- vellum_cli/__init__.py,sha256=i9jXzrSFcTGQJ5SgOv7_BZaMTgX_CSmNr5JoFIaTvJs,2204
1
+ vellum_cli/__init__.py,sha256=t62kIq0vDia8TTJqAmqFpYCo40buWNDQmjIDTOvmwwE,2416
2
2
  vellum_cli/aliased_group.py,sha256=ugW498j0yv4ALJ8vS9MsO7ctDW7Jlir9j6nE_uHAP8c,3363
3
3
  vellum_cli/config.py,sha256=urqMGQUkTntzdx-JV0P32FZVbqRZqgI-yFVmGPVblNI,3613
4
4
  vellum_cli/image_push.py,sha256=lCQhkQu-IlIMHNSynmEl5KUzO_dHW27NTAFWnyvPpcs,4419
5
5
  vellum_cli/logger.py,sha256=PuRFa0WCh4sAGFS5aqWB0QIYpS6nBWwPJrIXpWxugV4,1022
6
- vellum_cli/pull.py,sha256=nIjb0Ejv9IXDzxjTKj-G8J4V6wCh2gyd0AwXH_lW6TE,3065
6
+ vellum_cli/pull.py,sha256=op8HQmtiKa4TlrgEvhLiIac0Zhal6LETW22rhSkNHGE,3483
7
7
  vellum_cli/push.py,sha256=HhXHqLvWKf3CUZJ3yIm-KeoBkgk73EXqVtGgWYcBcVk,5089
8
8
  vellum_cli/tests/test_config.py,sha256=uvKGDc8BoVyT9_H0Z-g8469zVxomn6Oi3Zj-vK7O_wU,2631
9
- vellum_cli/tests/test_pull.py,sha256=osrjSMVs61rsfw6Ui7ZnzxSX4-VI64vKOQS7BY8zfIo,5126
9
+ vellum_cli/tests/test_pull.py,sha256=24sHYWNViS-G_UHmPC_-KXb6l3OOs2AiDGv2kKp4AHY,5815
10
10
  vellum_ee/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
+ vellum_ee/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
12
  vellum_ee/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
13
  vellum_ee/workflows/display/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
14
  vellum_ee/workflows/display/base.py,sha256=3ZFUYRNKL24fBqXhKpa_Dq2W1a-a86J20dmJYA3H2eY,1755
@@ -22,7 +23,7 @@ vellum_ee/workflows/display/nodes/utils.py,sha256=sloya5TpXsnot1HURc9L51INwflRqU
22
23
  vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=WQ_KbMp__S41AUFDHt9dZU6IQLK9AizdGMi2M6eK2_8,1362
23
24
  vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=5mMO1rKDafoPtnFZciuFGGfbu8Ei-j4zRiEDx9oQG4I,8572
24
25
  vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=VWFzPYzzNy4dSju0Gyegxx81A9cYjkN-dYqPTK3hCr4,3403
25
- vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=-DoU5wdR4rYYxkCXBGE0re0iOqLTOV-JY4D9UDEYoh8,10130
26
+ vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=3pVtCukiILTSZPUWuYLIwzwXGBSSUV4q--i0zlYxGKQ,10850
26
27
  vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=kR_z9ichhBtK_CLetqGjewmFmIFalfSiG2tQlM2T4yM,2772
27
28
  vellum_ee/workflows/display/nodes/vellum/guardrail_node.py,sha256=CiGZL1nxgK0KxLUgKilpollRYFIqqGHjSGXtvP1miqs,2168
28
29
  vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=NuNoPnvwbdSRkTQA3clLySNSzqkK0nmU4L0zYqgIfFQ,7397
@@ -41,7 +42,7 @@ vellum_ee/workflows/display/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
41
42
  vellum_ee/workflows/display/tests/workflow_serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
43
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=bLdJ0VVwAPDRvwaJMiMf0fRCuIWvvuRjAxKzddGPFyA,16871
43
44
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=JnaxdIDMudwgO4zzB0uJlCDYvoD1lZaAxFQ9OYxUFoA,22716
44
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=ojMpjIq89GqMN8rDSGgjNDReYOD2WvAofRooKVv7TU8,50681
45
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=0NxRo7KM_z8A1vgRgPISjCVFbYyKaeWCkgNldCkF6XY,53075
45
46
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=FNmGO1hQjQOOejfSY-ErcMJXxvrxMyR7GZq4UX26UHA,8271
46
47
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=2X8MzxZ3rf1lkx_e7Oez-qp4fvPZrdjulGAEOhbCMnY,21546
47
48
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=ESalw3PsfGy42w85FJr9VDWg8Rpv9NT25OMHpye27bs,14967
@@ -56,18 +57,18 @@ vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
56
57
  vellum_ee/workflows/display/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
58
  vellum_ee/workflows/display/utils/tests/test_uuids.py,sha256=ItjROhaPns8_mlvD17LIBwZKvhe2l0dXEd5oL-JiY64,448
58
59
  vellum_ee/workflows/display/utils/uuids.py,sha256=DFzPv9RCvsKhvdTEIQyfSek2A31D6S_QcmeLPbgrgTY,739
59
- vellum_ee/workflows/display/utils/vellum.py,sha256=PZ4J7MZukfLcjGfaWHPZBIcPaLdfqNhvW5a7iFKd1-4,4833
60
- vellum_ee/workflows/display/vellum.py,sha256=1-9WyUzkZM46In1wkPHP3wssqFUrRXuWCnV922bBW1M,8543
60
+ vellum_ee/workflows/display/utils/vellum.py,sha256=NbjS_dKEgrwjV71xgxgsVnAn-PTZ67SBPgXMMnTbvfg,5133
61
+ vellum_ee/workflows/display/vellum.py,sha256=_-lLRZsEitt8fdUID62aiXptWa8rJhyqgL4uy1gDmc4,8783
61
62
  vellum_ee/workflows/display/workflows/__init__.py,sha256=kapXsC67VJcgSuiBMa86FdePG5A9kMB5Pi4Uy1O2ob4,207
62
63
  vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=Tt_2K9T2KyMuIVn0Hfh1MlZLHpOjetwYsicaIf49ZAo,12447
63
64
  vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=fgngC_HWeNRRJBNaQQAxQNlOsnMS7e5zPyLe9aysn4M,1373
64
65
  vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=sDhCQJYdSJ4LcR7JBaTUllNhSaedQeD3Oe_ALUE3SiY,16634
65
- vellum/__init__.py,sha256=m0Vfy02ACEtGf7LlRkVWFCAVF19SDF47PWJrCKIDsgo,34220
66
- vellum/client/README.md,sha256=AnoYNaY6V9DMWIPs3Ntr1ljX5i8INGSmxMwDOWc83fs,5986
67
- vellum/client/__init__.py,sha256=GtF36JNWxnFRV348M0-YcGd9N6ES-l0Q5b32rwHCR5E,115031
66
+ vellum/__init__.py,sha256=xiYriEQZVk6SzItzQNOMpGoeO2yFTBGrEJZNHJesm8E,34416
67
+ vellum/client/README.md,sha256=8cKUE1kSuhz-U87n3-clA7o9_zlP0Avr4qKbvRbdT2k,5984
68
+ vellum/client/__init__.py,sha256=Fu-wzw_MiTtqAQOFhcFcrLKAPkEfUhf6K4ZuFspfKUw,115305
68
69
  vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
69
70
  vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
70
- vellum/client/core/client_wrapper.py,sha256=NtV_hNY-B4o5zusMKm-k1hGGkREthVEruxrnaFbHBs8,1890
71
+ vellum/client/core/client_wrapper.py,sha256=mQRFKZD2WpUTWabsoFG3brPhS2qJ4398Akys9PcuMV4,1890
71
72
  vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
72
73
  vellum/client/core/file.py,sha256=X9IbmkZmB2bB_DpmZAO3crWdXagOakAyn6UCOCImCPg,2322
73
74
  vellum/client/core/http_client.py,sha256=R0pQpCppnEtxccGvXl4uJ76s7ro_65Fo_erlNNLp_AI,19228
@@ -83,13 +84,13 @@ vellum/client/errors/bad_request_error.py,sha256=_EbO8mWqN9kFZPvIap8qa1lL_EWkRcs
83
84
  vellum/client/errors/forbidden_error.py,sha256=QO1kKlhClAPES6zsEK7g9pglWnxn3KWaOCAawWOg6Aw,263
84
85
  vellum/client/errors/internal_server_error.py,sha256=8USCagXyJJ1MOm9snpcXIUt6eNXvrd_aq7Gfcu1vlOI,268
85
86
  vellum/client/errors/not_found_error.py,sha256=tBVCeBC8n3C811WHRj_n-hs3h8MqwR5gp0vLiobk7W8,262
86
- vellum/client/resources/__init__.py,sha256=6tqe3AwLJGLW38iua0Tje0n3uz3a4vkqMFxbUJGRs98,1346
87
+ vellum/client/resources/__init__.py,sha256=2B6Oim7PG4IxSUNSzDY1EruQHsaZ7konj3j_WSTydCs,1378
87
88
  vellum/client/resources/ad_hoc/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
88
89
  vellum/client/resources/ad_hoc/client.py,sha256=6rsCw-oaq35-DVrb7NTyptc2WU9L6Eka99H3fNB0jA8,17749
89
90
  vellum/client/resources/container_images/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
90
91
  vellum/client/resources/container_images/client.py,sha256=jK1n-NFsdBKCeEKh-EIqvw7R8AG9PP4GxxcoH9F0GYs,15463
91
92
  vellum/client/resources/deployments/__init__.py,sha256=m64MNuPx3qVazOnTNwOY8oEeDrAkNwMJvUEe5xoMDvs,239
92
- vellum/client/resources/deployments/client.py,sha256=sG_Qyc9ks1oFHsBoIJgBnZId-__W5-3T_i8A9elHUzI,34520
93
+ vellum/client/resources/deployments/client.py,sha256=ssXaHJXBxO_I8JLuijusDVWwsfYadTw3j7o41ICYtrY,38777
93
94
  vellum/client/resources/deployments/types/__init__.py,sha256=29GVdoLOJsADSSSqZwb6CQPeEmPjkKrbsWfru1bemj8,321
94
95
  vellum/client/resources/deployments/types/deployments_list_request_status.py,sha256=CxlQD16KZXme7x31YYCe_3aAgEueutDTeJo5A4Au-aU,174
95
96
  vellum/client/resources/deployments/types/list_deployment_release_tags_request_source.py,sha256=hRGgWMYZL9uKCmD_2dU8-u9RCPUUGItpNn1tUY-NXKY,180
@@ -105,6 +106,8 @@ vellum/client/resources/folder_entities/types/__init__.py,sha256=cHabrupjC-HL3kj
105
106
  vellum/client/resources/folder_entities/types/folder_entities_list_request_entity_status.py,sha256=nK9b9fRSeCfjn2V2Hifl1IbhFeVsNkoeXJ8rCAPADFg,183
106
107
  vellum/client/resources/metric_definitions/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
107
108
  vellum/client/resources/metric_definitions/client.py,sha256=w-2IQ-ILDNqws6bWjZj6V9G86qw5zCVLXKq4j3Nebzw,5924
109
+ vellum/client/resources/ml_models/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
110
+ vellum/client/resources/ml_models/client.py,sha256=XIYapTEY6GRNr7V0Kjy5bEeKmrhv9ul8qlQY2A5LFqQ,3872
108
111
  vellum/client/resources/sandboxes/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
109
112
  vellum/client/resources/sandboxes/client.py,sha256=i-6DHap5k6gFcYS-kWI8ayJFVZxb-GENRft6BJwVam4,17158
110
113
  vellum/client/resources/test_suite_runs/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
@@ -112,7 +115,7 @@ vellum/client/resources/test_suite_runs/client.py,sha256=gCF1ewlUrCsZhnXYOYqdUuD
112
115
  vellum/client/resources/test_suites/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
113
116
  vellum/client/resources/test_suites/client.py,sha256=XOSXVzgcnyescVX02aKdRzLSxY32xS0ULXbwc9XFAE8,25063
114
117
  vellum/client/resources/workflow_deployments/__init__.py,sha256=_duH6m1CDWcfqX6DTBNjO3ar4Xrl-f5PozMaTcT4Kow,251
115
- vellum/client/resources/workflow_deployments/client.py,sha256=dtXQWS0qC8jaV8LdpZ88Ss-JISXI5lLp7UGRUkFXKMY,22667
118
+ vellum/client/resources/workflow_deployments/client.py,sha256=H9MhGYZVx1WLHE5j83Sl5HmX-CF6aJFCwQAGDG1n2oI,27149
116
119
  vellum/client/resources/workflow_deployments/types/__init__.py,sha256=W7DKJ1nduwhRckYLvH7wHLdaGH9MXHTZkxwG7FdTngY,340
117
120
  vellum/client/resources/workflow_deployments/types/list_workflow_release_tags_request_source.py,sha256=LPETHLX9Ygha_JRT9oWZAZR6clv-W1tTelXzktkTBX8,178
118
121
  vellum/client/resources/workflow_deployments/types/workflow_deployments_list_request_status.py,sha256=FXVkVmGM6DZ2RpTGnZXWJYiVlLQ-K5fDtX3WMaBPaWk,182
@@ -124,7 +127,7 @@ vellum/client/resources/workflows/types/__init__.py,sha256=-uFca4ypncAOvfsg6sjD-
124
127
  vellum/client/resources/workflows/types/workflows_pull_request_format.py,sha256=dOWE_jnDnniIJLoeseeCms23aklghyBkoPmBFzcqqZk,165
125
128
  vellum/client/resources/workspace_secrets/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
126
129
  vellum/client/resources/workspace_secrets/client.py,sha256=h7UzXLyTttPq1t-JZGMg1BWxypxJvBGUdqg7KGT7MK4,8027
127
- vellum/client/types/__init__.py,sha256=bkZN7uoG71R0R34OWEp-fjl4XQUiHkUQsp-TIFco_dQ,51700
130
+ vellum/client/types/__init__.py,sha256=fY4a4kaOhRGIChnfHFKrEAO-XCEF6m4zfTZNYnH8d24,51959
128
131
  vellum/client/types/ad_hoc_execute_prompt_event.py,sha256=bCjujA2XsOgyF3bRZbcEqV2rOIymRgsLoIRtZpB14xg,607
129
132
  vellum/client/types/ad_hoc_expand_meta.py,sha256=1gv-NCsy_6xBYupLvZH979yf2VMdxAU-l0y0ynMKZaw,1331
130
133
  vellum/client/types/ad_hoc_fulfilled_prompt_execution_meta.py,sha256=Bfvf1d_dkmshxRACVM5vcxbH_7AQY23RmrrnPc0ytYY,939
@@ -190,6 +193,7 @@ vellum/client/types/conditional_node_result.py,sha256=vx8xo9F1KoJqOnYPtSevfOcBxK
190
193
  vellum/client/types/conditional_node_result_data.py,sha256=yk4E7KHSzmKlweI9ce9eN_iW08V70KGmG1Z0K5455T0,604
191
194
  vellum/client/types/container_image_read.py,sha256=4i2dZkGrmWapW884F5ESVOLWElT5Y_478oB5NbDjAi0,787
192
195
  vellum/client/types/create_test_suite_test_case_request.py,sha256=SYUz7_aZMQlin_c1C0-B0W14YB0kC3cn21oPE4_64Ys,1711
196
+ vellum/client/types/deployment_history_item.py,sha256=YfcHo4X5OjHXsffndZoAjShYncUN19ZwIm96qKE0G7o,1310
193
197
  vellum/client/types/deployment_provider_payload_response.py,sha256=b0lkt0rK88ARQaMWn9MAHeWtMBsZKofDMlOAUsQvv7g,818
194
198
  vellum/client/types/deployment_provider_payload_response_payload.py,sha256=xHLQnWFN0AZRZdrOiKawwpoKK7BTmnZfp0P7FCc2ZqE,188
195
199
  vellum/client/types/deployment_read.py,sha256=NtXmYsYJOATxkMxeVkSM35XzDVGbva3RWmn5midBd1A,2160
@@ -311,6 +315,7 @@ vellum/client/types/metadata_filters_request.py,sha256=Yaiu7rkcrV2bCFk6HrZSjuF6V
311
315
  vellum/client/types/metric_definition_execution.py,sha256=xwr5VJTo32k77isUtz2uzHGmtRm6K_VyOlTCbJr0JNU,672
312
316
  vellum/client/types/metric_definition_input.py,sha256=4nmwpPqbeNQYCzLkXCkc-FGV5K2Zfa22xqSUe_L6o5s,331
313
317
  vellum/client/types/metric_node_result.py,sha256=YdKq1DZiBD1RBtjyMejImylv3BqrwY8B_UF4Ij-6_64,660
318
+ vellum/client/types/ml_model_read.py,sha256=Vr5KjaS2Tca0GXsltfSYQpuyGYpgIahPEFfS6HfFGSo,706
314
319
  vellum/client/types/ml_model_usage.py,sha256=WcZ2F1hfxyTwe-spOVwv-qJYDjs4hf9sn7BF2abawPo,910
315
320
  vellum/client/types/named_scenario_input_chat_history_variable_value_request.py,sha256=aVZmAxu-47c34NyhSkfi9tQqIPy29cdJ7Pb4MIgKeNw,862
316
321
  vellum/client/types/named_scenario_input_json_variable_value_request.py,sha256=UgnKv70zFviv1kl4nM7aM7IFA-7xyDOtglW4Y3GBZ28,757
@@ -559,6 +564,7 @@ vellum/client/types/vellum_value_request.py,sha256=Yke9JRiEaAS7i9NiCUMZiECzQOkSe
559
564
  vellum/client/types/vellum_variable.py,sha256=LNNNlYbT1VqadO6aUmeir9cXirtxgrIl-R2EalYZ5Uo,1123
560
565
  vellum/client/types/vellum_variable_extensions.py,sha256=PsrRo0STOKhxrkSFRrOXCPlf1x5Uxpy3vVMJz02O20E,685
561
566
  vellum/client/types/vellum_variable_type.py,sha256=SX8PY9l8zui3IaT9BwmOxczmb_WE7S9w37JshEZVemE,371
567
+ vellum/client/types/workflow_deployment_history_item.py,sha256=4WUPzcthBvEZ7iaisKfEg0soUtHjcTEnL_VUVaKpTyw,1420
562
568
  vellum/client/types/workflow_deployment_read.py,sha256=zBn6JDHemCnmU6M4tMtyxwmxETOPeGKJeg9fmiAEP4w,2363
563
569
  vellum/client/types/workflow_event_error.py,sha256=HIewu_kh3KNPpWegAQArvAGHCp-cBIXqlUAAc_dBZhc,687
564
570
  vellum/client/types/workflow_execution_actual_chat_history_request.py,sha256=L6U8tgM7SiU4qGJMZChFzj6HfHgO-YAlTXfbT7ZIaE4,1993
@@ -659,6 +665,8 @@ vellum/resources/folder_entities/types/__init__.py,sha256=tRr24soech0seY3EL7iEAx
659
665
  vellum/resources/folder_entities/types/folder_entities_list_request_entity_status.py,sha256=Bv0cgP2-uRPXoBWeRdVzq9fs5yauEIKWF5MU8F-7BFM,206
660
666
  vellum/resources/metric_definitions/__init__.py,sha256=T4lyfF6WVYl3dkj3v728lLzTNuP0JShdbckbQbQmUOw,160
661
667
  vellum/resources/metric_definitions/client.py,sha256=W25D_q4KLdd2tfSGd1oQt84lNqWVmuF67p4WS5BOkk0,167
668
+ vellum/resources/ml_models/__init__.py,sha256=qIepoIEWDHz3u7i0bW3jnTpdTdfPGhA1LBztQLh7Jrk,151
669
+ vellum/resources/ml_models/client.py,sha256=RSYFEe1BnFTDBMur2_eR3ZkLZbdWeTGe_OIuMwcsfdw,158
662
670
  vellum/resources/sandboxes/__init__.py,sha256=sycp4Bgvj9GzBGjiXhtmKFjOdBsIoDfMFaQrvDK_lGo,151
663
671
  vellum/resources/sandboxes/client.py,sha256=PBpYOg43HN-9B4YKtPqmE1aFag39ypLc5UWSxixUJjo,158
664
672
  vellum/resources/test_suite_runs/__init__.py,sha256=PfRYjodfN_rYZlUTiBnVXxdwQNcdmI-qT6MCqubd3ug,157
@@ -744,6 +752,7 @@ vellum/types/conditional_node_result.py,sha256=zcfDgqzQWXVcqEQi_ozC_7l2to8Y3uNZ5
744
752
  vellum/types/conditional_node_result_data.py,sha256=z7Mtn_iKkan2jrGc2Q7fx-anx3ijHSSqnZwAb1w4ouk,166
745
753
  vellum/types/container_image_read.py,sha256=36LQzvJaDGH26wjD6_WxgzwkslgRZihSYXu5n4W7abk,158
746
754
  vellum/types/create_test_suite_test_case_request.py,sha256=D_d6psjOMWx5jr2c7FwNndSH1ay5afdu5QXckqtBmfU,173
755
+ vellum/types/deployment_history_item.py,sha256=VqJfKFgb_lxUd5Hr1xQtF63FBn7uzHV84L4pla2MER8,161
747
756
  vellum/types/deployment_provider_payload_response.py,sha256=egWSp4Tn_IKsYt-nFzyJxoQ8DAFqnqZFBKioTgsN1DE,174
748
757
  vellum/types/deployment_provider_payload_response_payload.py,sha256=nuzn6G1Tc5h6ZOzF7St4WHU3fH_lMPJoiJu_YXWOVfw,182
749
758
  vellum/types/deployment_read.py,sha256=iJWCAuQLxL3GEMaMvC5SrUUEvVvSIPYWarQZ7yEyjvI,153
@@ -865,6 +874,7 @@ vellum/types/metadata_filters_request.py,sha256=Czs4HD9ibSdtX026v3NMur6L6wKOYYkv
865
874
  vellum/types/metric_definition_execution.py,sha256=Yx5b1CygziiPLjlZDQF0lVVI7ubRLVJn16vT3N7zmHQ,165
866
875
  vellum/types/metric_definition_input.py,sha256=TwMwjC_MNiLdodsvT52D7aa_wRY-0kT047flY3sFxII,161
867
876
  vellum/types/metric_node_result.py,sha256=Q_bUgbdRnSP26nEcJ-vZD7k2oLIcThN3JjW9hXTRfZo,156
877
+ vellum/types/ml_model_read.py,sha256=d_CPwZ3bhXtC8c5jwXkuNVvobDqPI-I_byZ6WnVla1Q,151
868
878
  vellum/types/ml_model_usage.py,sha256=Q-7_W6GfL8rMnqjhSiZirw8oB60GFc0p_mNYdZdlMjY,152
869
879
  vellum/types/named_scenario_input_chat_history_variable_value_request.py,sha256=Sfwba1cvocP8UR6CCDEjE7HsI5Xs6Dopk1W88Zf1ng8,194
870
880
  vellum/types/named_scenario_input_json_variable_value_request.py,sha256=1kZ4Y7TttH8O897rmtkEIMraql5dTIyEVvFZn0I5Py8,186
@@ -1113,6 +1123,7 @@ vellum/types/vellum_value_request.py,sha256=O8OsytBNQXFlxpsS0b6NLlFPYwd8v2gMXoVG
1113
1123
  vellum/types/vellum_variable.py,sha256=rmjuD8hMydLF480--5tWlHbvu6qNaz0Hs9bSrJ8DPEI,153
1114
1124
  vellum/types/vellum_variable_extensions.py,sha256=wwKDv_yxtP7gQmfz5HF3zab-FOLt-0OMUYIsHgvrOC0,164
1115
1125
  vellum/types/vellum_variable_type.py,sha256=d3Zkf0ued1QrO90CMGTUnlyg2xT8nKGM4Nv6-L6W_Pg,158
1126
+ vellum/types/workflow_deployment_history_item.py,sha256=dp5pwzOVO83KPwAbYeO3NXlKKHswGa0MTGX82nIhAIg,170
1116
1127
  vellum/types/workflow_deployment_read.py,sha256=dDGG27VP0bvC565JzeSOHJ-5Pvs7eCF4R8F9k8316bo,162
1117
1128
  vellum/types/workflow_event_error.py,sha256=n8yzIuTmfxKyGBKellmMhnCgi1d4fPkr0MvjR3sKOAI,158
1118
1129
  vellum/types/workflow_execution_actual_chat_history_request.py,sha256=xR8LHjQtxzZ0PJECgDZ9qEIoPuwb8KY8GEvbsraB_Ak,184
@@ -1216,14 +1227,14 @@ vellum/workflows/graph/tests/test_graph.py,sha256=zeBqfcMIlMS3AJn-t0YitKsa8O0r2f
1216
1227
  vellum/workflows/inputs/__init__.py,sha256=AbFEteIYEvCb14fM3EK7bhM-40-6s494rSlIhQ4Dsss,62
1217
1228
  vellum/workflows/inputs/base.py,sha256=1kMgr0WqCYdWUqgFvgSoAMw2067FAlgwhGXLgbIOrLY,2391
1218
1229
  vellum/workflows/logging.py,sha256=_a217XogktV4Ncz6xKFz7WfYmZAzkfVRVuC0rWob8ls,437
1219
- vellum/workflows/nodes/__init__.py,sha256=H9SU1F7xBNMj25SsYfMtny3n-9-9I_J6D_JTaX04d_U,1160
1230
+ vellum/workflows/nodes/__init__.py,sha256=l_dOI1T9jjka2fe5s4XYyiturK9ZSoPQwVXBofR-R18,1197
1220
1231
  vellum/workflows/nodes/bases/__init__.py,sha256=Ll1Ti6t3e_HKtGLsQTHAJevDmfo0QtfgPZUZ9FCRduI,140
1221
1232
  vellum/workflows/nodes/bases/base.py,sha256=-wp4d9akwCOWI9vjaFj3drSfppeF3zokaLme-krFp8M,13641
1222
1233
  vellum/workflows/nodes/bases/base_subworkflow_node/__init__.py,sha256=0nkHQiFC4IpA1ZGx60XG0BLUWF6hwUpgqmS3ZrlFGhg,80
1223
1234
  vellum/workflows/nodes/bases/base_subworkflow_node/node.py,sha256=vC0gUBQewAUNtP3i2G0-LUpE_kY-r_ijBD_tS1XkQ1E,383
1224
1235
  vellum/workflows/nodes/bases/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1225
1236
  vellum/workflows/nodes/bases/tests/test_base_node.py,sha256=t7mayifJU2OpXLTXI2G7gO1gIqlDWXsov7otUM7SEPk,3112
1226
- vellum/workflows/nodes/core/__init__.py,sha256=NLOenrFF99WIXWYZTmazjOG3hJeqz8eV0Y2v0BCY_EQ,410
1237
+ vellum/workflows/nodes/core/__init__.py,sha256=5zDMCmyt1v0HTJzlUBwq3U9L825yZGZhT9JL18-mRR4,455
1227
1238
  vellum/workflows/nodes/core/error_node/__init__.py,sha256=g7RRnlHhqu4qByfLjBwCunmgGA8dI5gNsjS3h6TwlSI,60
1228
1239
  vellum/workflows/nodes/core/error_node/node.py,sha256=hqBPHoLnhNrK9ITIaEzpnk47XYDbG6cmObz7oe78Ceg,944
1229
1240
  vellum/workflows/nodes/core/inline_subworkflow_node/__init__.py,sha256=nKNEH1QTl-1PcvmYoqSWEl0-t6gAur8GLTXHzklRQfM,84
@@ -1258,7 +1269,7 @@ vellum/workflows/nodes/displayable/bases/inline_prompt_node/__init__.py,sha256=H
1258
1269
  vellum/workflows/nodes/displayable/bases/inline_prompt_node/constants.py,sha256=fnjiRWLoRlC4Puo5oQcpZD5Hd-EesxsAo9l5tGAkpZQ,270
1259
1270
  vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=vbl6LRCrmlxFURcFGFMAEBJjgNGPB5q9AnQ8UITxYuI,4869
1260
1271
  vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=JjNMiAFgOupUo5EUeHaryG74SCjEECxBZiS8cMECR_c,4378
1261
- vellum/workflows/nodes/displayable/bases/search_node.py,sha256=3nAynaNB70rV3m2zpxv2WbS8Gx_cmi8MrpsKgRmxJpI,3396
1272
+ vellum/workflows/nodes/displayable/bases/search_node.py,sha256=z8IQg-J46AbRMgFi92M08A220Wf7gU0xE3634ii3T1E,3565
1262
1273
  vellum/workflows/nodes/displayable/code_execution_node/__init__.py,sha256=0FLWMMktpzSnmBMizQglBpcPrP80fzVsoJwJgf822Cg,76
1263
1274
  vellum/workflows/nodes/displayable/code_execution_node/node.py,sha256=zIq2MHlLwxSHpFJiYMUp4F0PWfvbMETWUwHTsXi85W0,7962
1264
1275
  vellum/workflows/nodes/displayable/code_execution_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1279,7 +1290,7 @@ vellum/workflows/nodes/displayable/merge_node/node.py,sha256=ZyPvcTgfPOneOm5Dc2k
1279
1290
  vellum/workflows/nodes/displayable/prompt_deployment_node/__init__.py,sha256=krX1Hds-TSVYZsx0wJFX4wsAKkEFYOX1ifwRGiIM-EA,82
1280
1291
  vellum/workflows/nodes/displayable/prompt_deployment_node/node.py,sha256=zEgOWgahPr-Jozd97xEqhX3ZelcHcMuKPMiOFb1igXE,2321
1281
1292
  vellum/workflows/nodes/displayable/search_node/__init__.py,sha256=hpBpvbrDYf43DElRZFLzieSn8weXiwNiiNOJurERQbs,62
1282
- vellum/workflows/nodes/displayable/search_node/node.py,sha256=DvPyhkuyy3D36OcZm_ZUw4Kc0f_kVQNHG2H0myfQQTE,1067
1293
+ vellum/workflows/nodes/displayable/search_node/node.py,sha256=k7_S5yWFGZrIV1R5BsFIFSkOvmnbJK39pNmZD8XLCX4,1310
1283
1294
  vellum/workflows/nodes/displayable/subworkflow_deployment_node/__init__.py,sha256=9yYM6001YZeqI1VOk1QuEM_yrffk_EdsO7qaPzINKds,92
1284
1295
  vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=HjKaQ8QaqmdEcwOIg2DoWk__l9cMpR4tYnZ51WQDThk,6714
1285
1296
  vellum/workflows/nodes/displayable/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1295,7 +1306,7 @@ vellum/workflows/ports/port.py,sha256=4Y3heJglodE5svzq7om7e-5gqANqnbiqKD3ffQMGLV
1295
1306
  vellum/workflows/ports/utils.py,sha256=pEjVNJKw9LhD_cFN-o0MWBOW2ejno7jv26qqzjLxwS4,1662
1296
1307
  vellum/workflows/references/__init__.py,sha256=tKHT1lePWOmDoPkrS7I2kPml_me9-WQwZmCoQzhU6k8,513
1297
1308
  vellum/workflows/references/environment_variable.py,sha256=7FFtiKfc4eyVkkfUbhc666OBNDqvFlMoNQEYmGpEVVE,661
1298
- vellum/workflows/references/execution_count.py,sha256=HJwRN-1dd-mucaE7uEwp6FM8whSpziHyiSYOTCCi09E,629
1309
+ vellum/workflows/references/execution_count.py,sha256=JILHqt8ELdc9ct-WsVCA5X-rKiP1rmJODw-XTf4kpHI,722
1299
1310
  vellum/workflows/references/external_input.py,sha256=ZSnRIjrTwpWuBcInZMvQQzcDgkeZ1r7-C7I4sRpDNy4,1658
1300
1311
  vellum/workflows/references/input.py,sha256=3INu-TLTi4dziWmva6LO3WvgDlPzsjayUx61cVvqLJA,325
1301
1312
  vellum/workflows/references/lazy.py,sha256=SXwZUCTzUR-R2-uK0XHALtvp1x84l-QkNY-Ds6KynYA,1932
@@ -1332,8 +1343,8 @@ vellum/workflows/utils/vellum_variables.py,sha256=JA7hhbJ_9m7KEYFaCv5R6FqYeTRWDp
1332
1343
  vellum/workflows/vellum_client.py,sha256=ODrq_TSl-drX2aezXegf7pizpWDVJuTXH-j6528t75s,683
1333
1344
  vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
1334
1345
  vellum/workflows/workflows/base.py,sha256=NbQ3jR9veKdfK5S9qPkiJvy16l19YyQxzops_Y09wMw,12872
1335
- vellum_ai-0.10.0.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1336
- vellum_ai-0.10.0.dist-info/METADATA,sha256=PvmlgbovBSzW_NSBouWBQrW9g6lFtxTR8dhc_cZJW0U,4997
1337
- vellum_ai-0.10.0.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
1338
- vellum_ai-0.10.0.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1339
- vellum_ai-0.10.0.dist-info/RECORD,,
1346
+ vellum_ai-0.10.2.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1347
+ vellum_ai-0.10.2.dist-info/METADATA,sha256=UPsNCcm_oVqPV4zmvlxPX4hSC_VUjpPJ7z5LcCF4rOY,5011
1348
+ vellum_ai-0.10.2.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
1349
+ vellum_ai-0.10.2.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1350
+ vellum_ai-0.10.2.dist-info/RECORD,,
vellum_cli/__init__.py CHANGED
@@ -43,9 +43,10 @@ def push(
43
43
  @main.command()
44
44
  @click.argument("module", required=False)
45
45
  @click.option("--legacy-module", is_flag=True, help="Pull the workflow as a legacy module")
46
- def pull(module: Optional[str], legacy_module: Optional[bool]) -> None:
46
+ @click.option("--include-json", is_flag=True, help="Include the JSON representation of the Workflow in the pull response. Should only be used for debugging purposes.")
47
+ def pull(module: Optional[str], legacy_module: Optional[bool], include_json: Optional[bool]) -> None:
47
48
  """Pull Workflow from Vellum"""
48
- pull_command(module, legacy_module)
49
+ pull_command(module, legacy_module, include_json)
49
50
 
50
51
 
51
52
  @main.group(aliases=["images", "image"])
vellum_cli/pull.py CHANGED
@@ -6,12 +6,14 @@ from typing import Optional
6
6
 
7
7
  from dotenv import load_dotenv
8
8
 
9
+ from vellum.workflows.vellum_client import create_vellum_client
9
10
  from vellum_cli.config import load_vellum_cli_config
10
11
  from vellum_cli.logger import load_cli_logger
11
- from vellum.workflows.vellum_client import create_vellum_client
12
12
 
13
13
 
14
- def pull_command(module: Optional[str], legacy_module: Optional[bool] = None) -> None:
14
+ def pull_command(
15
+ module: Optional[str], legacy_module: Optional[bool] = None, include_json: Optional[bool] = None
16
+ ) -> None:
15
17
  load_dotenv()
16
18
  logger = load_cli_logger()
17
19
  config = load_vellum_cli_config()
@@ -22,7 +24,9 @@ def pull_command(module: Optional[str], legacy_module: Optional[bool] = None) ->
22
24
  if len(config.workflows) > 1 and not module:
23
25
  raise ValueError("Multiple workflows found in project to pull. Pulling only a single workflow is supported.")
24
26
 
25
- workflow_config = next((w for w in config.workflows if w.module == module), None) if module else config.workflows[0]
27
+ workflow_config = (
28
+ next((w for w in config.workflows if w.module == module), None) if module else config.workflows[0]
29
+ )
26
30
  if workflow_config is None:
27
31
  raise ValueError(f"No workflow config for '{module}' found in project to push.")
28
32
 
@@ -31,9 +35,15 @@ def pull_command(module: Optional[str], legacy_module: Optional[bool] = None) ->
31
35
 
32
36
  logger.info(f"Pulling workflow into {workflow_config.module}")
33
37
  client = create_vellum_client()
38
+ query_parameters = {}
39
+ if legacy_module:
40
+ query_parameters["legacyModule"] = legacy_module
41
+ if include_json:
42
+ query_parameters["include_json"] = include_json
43
+
34
44
  response = client.workflows.pull(
35
45
  workflow_config.workflow_sandbox_id,
36
- request_options={"additional_query_parameters": {"legacyModule": legacy_module} if legacy_module else {}},
46
+ request_options={"additional_query_parameters": query_parameters},
37
47
  )
38
48
 
39
49
  zip_bytes = b"".join(response)
@@ -70,4 +80,7 @@ def pull_command(module: Optional[str], legacy_module: Optional[bool] = None) ->
70
80
  logger.info(f"Writing to {target_file}...")
71
81
  target.write(source.read().decode("utf-8"))
72
82
 
83
+ if include_json:
84
+ logger.warning("The pulled JSON representation of the Workflow should be used for debugging purposely only. Its schema should be considered unstable and subject to change at any time.")
85
+
73
86
  logger.info(f"Successfully pulled Workflow into {workflow_config.module}")
@@ -150,3 +150,21 @@ def test_pull__remove_missing_files__ignore_pattern(vellum_client, mock_module):
150
150
 
151
151
  # AND the tests/test_workflow.py file is untouched
152
152
  assert os.path.exists(test_file_path)
153
+
154
+
155
+ def test_pull__include_json(vellum_client, mock_module):
156
+ # GIVEN a module on the user's filesystem
157
+ _, module = mock_module
158
+
159
+ # AND the workflow pull API call returns a zip file
160
+ vellum_client.workflows.pull.return_value = iter(
161
+ [zip_file_map({"workflow.py": "print('hello')", "workflow.json": "{}"})]
162
+ )
163
+
164
+ # WHEN the user runs the pull command
165
+ pull_command(module, include_json=True)
166
+
167
+ # THEN the pull api is called with include_json=True
168
+ vellum_client.workflows.pull.assert_called_once()
169
+ call_args = vellum_client.workflows.pull.call_args.kwargs
170
+ assert call_args["request_options"]["additional_query_parameters"] == {"include_json": True}
vellum_ee/py.typed ADDED
File without changes
@@ -40,10 +40,16 @@ class RuleIdMap:
40
40
  lhs: Optional["RuleIdMap"]
41
41
  rhs: Optional["RuleIdMap"]
42
42
 
43
+ @dataclass
44
+ class ConditionId:
45
+ id: UUID
46
+ rule_group_id: UUID
47
+
43
48
 
44
49
  class BaseConditionalNodeDisplay(BaseNodeVellumDisplay[_ConditionalNodeType], Generic[_ConditionalNodeType]):
45
50
  source_handle_ids: ClassVar[Dict[int, UUID]]
46
51
  rule_ids: ClassVar[List[RuleIdMap]]
52
+ condition_ids: ClassVar[list[ConditionId]]
47
53
 
48
54
  def serialize(self, display_context: WorkflowDisplayContext, **kwargs: Any) -> JsonObject:
49
55
  node = self._node
@@ -51,6 +57,13 @@ class BaseConditionalNodeDisplay(BaseNodeVellumDisplay[_ConditionalNodeType], Ge
51
57
 
52
58
  node_inputs: List[NodeInput] = []
53
59
  source_handle_ids = self._get_source_handle_ids() or {}
60
+ condition_ids = self._get_condition_ids()
61
+
62
+ ports_size = sum(1 for _ in node.Ports)
63
+
64
+ if len(condition_ids) > ports_size:
65
+ raise ValueError(
66
+ f"Too many defined condition ids. Ports are size {ports_size} but the defined conditions have length {len(condition_ids)}")
54
67
 
55
68
  def serialize_rule(
56
69
  descriptor: BaseDescriptor, path: List[int], rule_id_map: Optional[RuleIdMap]
@@ -132,7 +145,9 @@ class BaseConditionalNodeDisplay(BaseNodeVellumDisplay[_ConditionalNodeType], Ge
132
145
  if port._condition is None or port._condition_type is None:
133
146
  continue
134
147
 
135
- condition_id = str(uuid4_from_hash(f"{node_id}|conditions|{idx}"))
148
+
149
+ condition_id = str(condition_ids[idx].id if condition_ids else uuid4_from_hash(f"{node_id}|conditions|{idx}"))
150
+ rule_group_id = str(condition_ids[idx].rule_group_id if condition_ids else uuid4_from_hash(f"{condition_id}|rule_group"))
136
151
  source_handle_id = str(source_handle_ids.get(idx) or uuid4_from_hash(f"{node_id}|handles|{idx}"))
137
152
 
138
153
  rule_ids = self._get_rule_ids()
@@ -145,7 +160,7 @@ class BaseConditionalNodeDisplay(BaseNodeVellumDisplay[_ConditionalNodeType], Ge
145
160
  "type": port._condition_type.value,
146
161
  "source_handle_id": source_handle_id,
147
162
  "data": {
148
- "id": str(uuid4_from_hash(f"{condition_id}|rule_group")),
163
+ "id": rule_group_id,
149
164
  "rules": rules,
150
165
  "combinator": "AND",
151
166
  "negated": False,
@@ -215,3 +230,6 @@ class BaseConditionalNodeDisplay(BaseNodeVellumDisplay[_ConditionalNodeType], Ge
215
230
 
216
231
  def _get_rule_ids(self) -> List[RuleIdMap]:
217
232
  return self._get_explicit_node_display_attr("rule_ids", List[RuleIdMap]) or []
233
+
234
+ def _get_condition_ids(self)-> List[ConditionId]:
235
+ return self._get_explicit_node_display_attr("condition_ids", List[ConditionId]) or []