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

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