vellum-ai 1.7.8__py3-none-any.whl → 1.7.10__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.

Potentially problematic release.


This version of vellum-ai might be problematic. Click here for more details.

Files changed (35) hide show
  1. vellum/client/core/client_wrapper.py +2 -2
  2. vellum/workflows/errors/types.py +3 -0
  3. vellum/workflows/graph/graph.py +4 -1
  4. vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py +14 -5
  5. vellum/workflows/runner/runner.py +17 -5
  6. vellum/workflows/utils/functions.py +1 -1
  7. vellum/workflows/workflows/base.py +2 -2
  8. {vellum_ai-1.7.8.dist-info → vellum_ai-1.7.10.dist-info}/METADATA +1 -1
  9. {vellum_ai-1.7.8.dist-info → vellum_ai-1.7.10.dist-info}/RECORD +35 -35
  10. vellum_ee/assets/node-definitions.json +91 -65
  11. vellum_ee/workflows/display/nodes/base_node_display.py +46 -26
  12. vellum_ee/workflows/display/nodes/vellum/code_execution_node.py +1 -1
  13. vellum_ee/workflows/display/nodes/vellum/conditional_node.py +1 -1
  14. vellum_ee/workflows/display/nodes/vellum/error_node.py +1 -1
  15. vellum_ee/workflows/display/nodes/vellum/final_output_node.py +1 -1
  16. vellum_ee/workflows/display/nodes/vellum/guardrail_node.py +1 -1
  17. vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py +1 -1
  18. vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py +1 -1
  19. vellum_ee/workflows/display/nodes/vellum/map_node.py +1 -1
  20. vellum_ee/workflows/display/nodes/vellum/merge_node.py +1 -1
  21. vellum_ee/workflows/display/nodes/vellum/note_node.py +1 -1
  22. vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py +1 -1
  23. vellum_ee/workflows/display/nodes/vellum/search_node.py +1 -1
  24. vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py +1 -1
  25. vellum_ee/workflows/display/nodes/vellum/templating_node.py +1 -1
  26. vellum_ee/workflows/display/nodes/vellum/tests/test_api_node.py +34 -0
  27. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py +8 -0
  28. vellum_ee/workflows/display/tests/workflow_serialization/test_manual_trigger_serialization.py +33 -70
  29. vellum_ee/workflows/display/tests/workflow_serialization/test_slack_trigger_serialization.py +40 -155
  30. vellum_ee/workflows/display/utils/expressions.py +12 -0
  31. vellum_ee/workflows/display/workflows/base_workflow_display.py +1 -1
  32. vellum_ee/workflows/tests/test_server.py +5 -0
  33. {vellum_ai-1.7.8.dist-info → vellum_ai-1.7.10.dist-info}/LICENSE +0 -0
  34. {vellum_ai-1.7.8.dist-info → vellum_ai-1.7.10.dist-info}/WHEEL +0 -0
  35. {vellum_ai-1.7.8.dist-info → vellum_ai-1.7.10.dist-info}/entry_points.txt +0 -0
@@ -27,10 +27,10 @@ class BaseClientWrapper:
27
27
 
28
28
  def get_headers(self) -> typing.Dict[str, str]:
29
29
  headers: typing.Dict[str, str] = {
30
- "User-Agent": "vellum-ai/1.7.8",
30
+ "User-Agent": "vellum-ai/1.7.10",
31
31
  "X-Fern-Language": "Python",
32
32
  "X-Fern-SDK-Name": "vellum-ai",
33
- "X-Fern-SDK-Version": "1.7.8",
33
+ "X-Fern-SDK-Version": "1.7.10",
34
34
  **(self.get_custom_headers() or {}),
35
35
  }
36
36
  if self._api_version is not None:
@@ -23,6 +23,7 @@ class WorkflowErrorCode(Enum):
23
23
  PROVIDER_CREDENTIALS_UNAVAILABLE = "PROVIDER_CREDENTIALS_UNAVAILABLE"
24
24
  INTEGRATION_CREDENTIALS_UNAVAILABLE = "INTEGRATION_CREDENTIALS_UNAVAILABLE"
25
25
  PROVIDER_ERROR = "PROVIDER_ERROR"
26
+ PROVIDER_QUOTA_EXCEEDED = "PROVIDER_QUOTA_EXCEEDED"
26
27
  USER_DEFINED_ERROR = "USER_DEFINED_ERROR"
27
28
  WORKFLOW_CANCELLED = "WORKFLOW_CANCELLED"
28
29
  NODE_CANCELLED = "NODE_CANCELLED"
@@ -44,6 +45,7 @@ _VELLUM_ERROR_CODE_TO_WORKFLOW_ERROR_CODE: Dict[VellumErrorCodeEnum, WorkflowErr
44
45
  "INVALID_INPUTS": WorkflowErrorCode.INVALID_INPUTS,
45
46
  "PROVIDER_ERROR": WorkflowErrorCode.PROVIDER_ERROR,
46
47
  "PROVIDER_CREDENTIALS_UNAVAILABLE": WorkflowErrorCode.PROVIDER_CREDENTIALS_UNAVAILABLE,
48
+ "PROVIDER_QUOTA_EXCEEDED": WorkflowErrorCode.PROVIDER_QUOTA_EXCEEDED,
47
49
  "INTEGRATION_CREDENTIALS_UNAVAILABLE": WorkflowErrorCode.INTEGRATION_CREDENTIALS_UNAVAILABLE,
48
50
  "REQUEST_TIMEOUT": WorkflowErrorCode.PROVIDER_ERROR,
49
51
  "INTERNAL_SERVER_ERROR": WorkflowErrorCode.INTERNAL_ERROR,
@@ -99,6 +101,7 @@ _WORKFLOW_ERROR_CODE_TO_VELLUM_ERROR_CODE: Dict[WorkflowErrorCode, VellumErrorCo
99
101
  WorkflowErrorCode.NODE_EXECUTION: "USER_DEFINED_ERROR",
100
102
  WorkflowErrorCode.PROVIDER_ERROR: "PROVIDER_ERROR",
101
103
  WorkflowErrorCode.PROVIDER_CREDENTIALS_UNAVAILABLE: "PROVIDER_CREDENTIALS_UNAVAILABLE",
104
+ WorkflowErrorCode.PROVIDER_QUOTA_EXCEEDED: "PROVIDER_QUOTA_EXCEEDED",
102
105
  WorkflowErrorCode.INTEGRATION_CREDENTIALS_UNAVAILABLE: "INTEGRATION_CREDENTIALS_UNAVAILABLE",
103
106
  WorkflowErrorCode.USER_DEFINED_ERROR: "USER_DEFINED_ERROR",
104
107
  WorkflowErrorCode.WORKFLOW_CANCELLED: "REQUEST_TIMEOUT",
@@ -175,7 +175,10 @@ class Graph:
175
175
  )
176
176
 
177
177
  if not self._edges and not self._entrypoints:
178
- raise ValueError("Graph instance can only create new edges from nodes within existing edges")
178
+ raise ValueError(
179
+ "Cannot create edges from nodes with empty Ports classes (like TERMINAL/FinalOutputNode). "
180
+ "TERMINAL nodes are designed to be workflow outputs and cannot connect to other nodes."
181
+ )
179
182
 
180
183
  if self._terminals and all(isinstance(terminal, NoPortsNode) for terminal in self._terminals):
181
184
  terminal_names = [terminal.node_class.__name__ for terminal in self._terminals]
@@ -4,9 +4,11 @@ from typing import ClassVar, Generator, Generic, Iterator, List, Optional, Union
4
4
  from vellum import AdHocExecutePromptEvent, ExecutePromptEvent, PromptOutput
5
5
  from vellum.client.core import RequestOptions
6
6
  from vellum.client.core.api_error import ApiError
7
+ from vellum.workflows.descriptors.base import BaseDescriptor
7
8
  from vellum.workflows.errors.types import WorkflowErrorCode, vellum_error_to_workflow_error
8
9
  from vellum.workflows.events.node import NodeExecutionStreamingEvent
9
10
  from vellum.workflows.exceptions import NodeException
11
+ from vellum.workflows.expressions.coalesce_expression import CoalesceExpression
10
12
  from vellum.workflows.nodes.bases import BaseNode
11
13
  from vellum.workflows.outputs.base import BaseOutput, BaseOutputs
12
14
  from vellum.workflows.references.output import OutputReference
@@ -14,6 +16,16 @@ from vellum.workflows.types.core import EntityInputsInterface, MergeBehavior
14
16
  from vellum.workflows.types.generics import StateType
15
17
 
16
18
 
19
+ def _contains_reference_to_output(reference: BaseDescriptor, target_reference: OutputReference) -> bool:
20
+ if reference == target_reference:
21
+ return True
22
+ if isinstance(reference, CoalesceExpression):
23
+ return _contains_reference_to_output(reference.lhs, target_reference) or _contains_reference_to_output(
24
+ reference.rhs, target_reference
25
+ )
26
+ return False
27
+
28
+
17
29
  class BasePromptNode(BaseNode[StateType], Generic[StateType]):
18
30
  # Inputs that are passed to the Prompt
19
31
  prompt_inputs: ClassVar[Optional[EntityInputsInterface]] = None
@@ -112,10 +124,7 @@ class BasePromptNode(BaseNode[StateType], Generic[StateType]):
112
124
  if not target_node_output:
113
125
  return False
114
126
 
115
- if not isinstance(target_node_output.instance, OutputReference):
127
+ if not isinstance(target_node_output.instance, BaseDescriptor):
116
128
  return False
117
129
 
118
- if target_node_output.instance.name != "text":
119
- return False
120
-
121
- return True
130
+ return _contains_reference_to_output(target_node_output.instance, event.node_definition.Outputs.text)
@@ -82,7 +82,7 @@ if TYPE_CHECKING:
82
82
 
83
83
  logger = logging.getLogger(__name__)
84
84
 
85
- RunFromNodeArg = Sequence[Type[BaseNode]]
85
+ RunFromNodeArg = Sequence[Union[Type[BaseNode], UUID]]
86
86
  ExternalInputsArg = Dict[ExternalInputReference, Any]
87
87
  BackgroundThreadItem = Union[BaseState, WorkflowEvent, None]
88
88
 
@@ -117,19 +117,31 @@ class WorkflowRunner(Generic[StateType]):
117
117
  self._should_emit_initial_state = True
118
118
  self._span_link_info: Optional[Tuple[str, str, str, str]] = None
119
119
  if entrypoint_nodes:
120
- if len(list(entrypoint_nodes)) > 1:
121
- raise ValueError("Cannot resume from multiple nodes")
120
+ nodes_by_id = {node.__id__: node for node in self.workflow.get_all_nodes()}
121
+
122
+ resolved_nodes = []
123
+ for item in entrypoint_nodes:
124
+ if isinstance(item, UUID):
125
+ matching_node = nodes_by_id.get(item)
126
+ if matching_node is None:
127
+ raise ValueError(f"No node found with UUID {item}")
128
+ resolved_nodes.append(matching_node)
129
+ else:
130
+ resolved_nodes.append(item)
131
+
132
+ if len(list(resolved_nodes)) > 1:
133
+ raise WorkflowInitializationException("Cannot resume from multiple nodes")
122
134
 
123
135
  # TODO: Support resuming from multiple nodes
124
136
  # https://app.shortcut.com/vellum/story/4408
125
- node = next(iter(entrypoint_nodes))
137
+ node = next(iter(resolved_nodes))
126
138
  if state:
127
139
  self._initial_state = deepcopy(state)
128
140
  self._initial_state.meta.span_id = uuid4()
129
141
  self._initial_state.meta.workflow_definition = self.workflow.__class__
130
142
  else:
131
143
  self._initial_state = self.workflow.get_state_at_node(node)
132
- self._entrypoints = entrypoint_nodes
144
+ self._entrypoints = resolved_nodes
133
145
  elif external_inputs:
134
146
  self._initial_state = self.workflow.get_most_recent_state()
135
147
  for descriptor, value in external_inputs.items():
@@ -283,7 +283,7 @@ def compile_mcp_tool_definition(server_def: MCPServer) -> List[MCPToolDefinition
283
283
  We do tool discovery on the MCP server to get the tool definitions.
284
284
 
285
285
  Args:
286
- tool_def: The basic MCPToolDefinition to enhance
286
+ server_def: The basic MCPToolDefinition to enhance
287
287
 
288
288
  Returns:
289
289
  MCPToolDefinition with detailed parameters and description
@@ -723,9 +723,9 @@ class BaseWorkflow(Generic[InputsType, StateType], BaseExecutable, metaclass=_Ba
723
723
  workflows.append(attr)
724
724
 
725
725
  if len(workflows) == 0:
726
- raise ValueError(f"No workflows found in {module_path}")
726
+ raise WorkflowInitializationException(f"No workflows found in {module_path}")
727
727
  elif len(workflows) > 1:
728
- raise ValueError(f"Multiple workflows found in {module_path}")
728
+ raise WorkflowInitializationException(f"Multiple workflows found in {module_path}")
729
729
  return workflows[0]
730
730
 
731
731
  def join(self) -> None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vellum-ai
3
- Version: 1.7.8
3
+ Version: 1.7.10
4
4
  Summary:
5
5
  License: MIT
6
6
  Requires-Python: >=3.9,<4.0
@@ -22,7 +22,7 @@ vellum_cli/tests/test_ping.py,sha256=b3aQLd-N59_8w2rRiWqwpB1rlHaKEYVbAj1Y3hi7A-g
22
22
  vellum_cli/tests/test_pull.py,sha256=e2XHzcHIx9k-FyuNAl7wMSNsSSebPGyP6U05JGcddFs,49447
23
23
  vellum_cli/tests/test_push.py,sha256=oQ3x28G6IxplmMWCcPEYY46nOYAEPaihcMVsN4quQ5Q,45000
24
24
  vellum_ee/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- vellum_ee/assets/node-definitions.json,sha256=Mm3c1nfEa1QjWWzNvIJlhahDcY4SM3wQm8og_x3jyd8,30755
25
+ vellum_ee/assets/node-definitions.json,sha256=FHw1RlnD7n8nHBSN9hMsrjBGq9SnM2wga7URiSCDGBY,31408
26
26
  vellum_ee/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
27
  vellum_ee/scripts/generate_node_definitions.py,sha256=FOYQsXIqU45I0OAcsyZUGODF9JK44yunf58rR6YaAdA,3303
28
28
  vellum_ee/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -32,7 +32,7 @@ vellum_ee/workflows/display/editor/__init__.py,sha256=MSAgY91xCEg2neH5d8jXx5wRdR
32
32
  vellum_ee/workflows/display/editor/types.py,sha256=rmaNXkNZUNRgK-mJJ_g1-Fm3OGxoQfqEB7zn-zzgJtc,664
33
33
  vellum_ee/workflows/display/exceptions.py,sha256=_FDhK-lfuBPHY2GSywp70ewM0k55Ji5Bp-wZlEZenz4,112
34
34
  vellum_ee/workflows/display/nodes/__init__.py,sha256=jI1aPBQf8DkmrYoZ4O-wR1duqZByOf5mDFmo_wFJPE4,307
35
- vellum_ee/workflows/display/nodes/base_node_display.py,sha256=ceKQdHZmDSOY5-M2DtJnuLbdkuFujCChFtRABDoV1jo,19497
35
+ vellum_ee/workflows/display/nodes/base_node_display.py,sha256=2sToAwhdVCU0DssQhHcGwC2r1rQCloW18-mp12JZeqs,20332
36
36
  vellum_ee/workflows/display/nodes/get_node_display_class.py,sha256=jI_kUi9LnNLDpY63QtlC4TfN8P571VN4LpzH0I1ZtLk,1149
37
37
  vellum_ee/workflows/display/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
38
  vellum_ee/workflows/display/nodes/tests/test_base_node_display.py,sha256=JLa9nlG38dLfCo1Y8ISsJ21hrfDyy4-ae3pZ9H01yFs,5578
@@ -41,23 +41,23 @@ vellum_ee/workflows/display/nodes/utils.py,sha256=sloya5TpXsnot1HURc9L51INwflRqU
41
41
  vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=nUIgH2s0-7IbQRNrBhLPyRNe8YIrx3Yo9HeeW-aXXFk,1668
42
42
  vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=nCtFc5f9u0-OOZvVcMZtc6wwq7MyqAGATH-jPgRTMNM,9028
43
43
  vellum_ee/workflows/display/nodes/vellum/base_adornment_node.py,sha256=FHhPoGmmny4Xcxi2pm12Sk3ZOREanWEVrOWcjRhncH4,6337
44
- vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=qvPSqYKz9op7gKg-ZjKa3U6dsaaxuv76TIIbUMeGKjY,5152
45
- vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=dtO9A-rjbDEJrywwrOxwEXahqrW-S493OIDHOti9Sjs,11498
46
- vellum_ee/workflows/display/nodes/vellum/error_node.py,sha256=8tSb8qGVoRIELubu0qPeoDlt1LpiIqc6d9_30GWRd_k,2266
47
- vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=z4oeTgKnMGVaGig8XOZm5B_xYL4H7zweYlFweCbhnyA,3000
48
- vellum_ee/workflows/display/nodes/vellum/guardrail_node.py,sha256=9_AslWjzj4RHH2sq3SIaq9FU0NCg7ex5TIWrNMybqXg,2173
49
- vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=KA4U5NADWCBBbTG0f76OOFW9HvlWd5DfZoqN5Y0ZK9c,12167
50
- vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py,sha256=dfZuJEENgP5uvF4IzyWJdoqopjjZa_u1-VWtWBHADqI,6440
51
- vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=we7NENZpci-LiWXJFTPWzliCMdjzCMMMWUCfgJ-oP0g,4297
52
- vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=xMHaPfTSZWYprQenlHm2g47u0a5O9Me_dhAjfqo8nKQ,3116
53
- vellum_ee/workflows/display/nodes/vellum/note_node.py,sha256=6PcAFA_EJn7vEMdqgoRjYTLHwnXCrJv80B10zuUx4jE,1026
54
- vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=Ue727X7g7jUo9Yi_AXoLD-IQHi0crENkMJjPBY2hZO8,3709
44
+ vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=4fuMztGTeyNeg_JFDaVsbM-MFB-RMQwAF9iCpkO7Coc,5173
45
+ vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=lzYPDO7JRdIKshbwPJr7u6QsjAJuRPFz7PSbqewhPJM,11519
46
+ vellum_ee/workflows/display/nodes/vellum/error_node.py,sha256=BXNgRk9YY6CZT056ManeIqsJbEnkDui_JPe47Xy6VVw,2287
47
+ vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=SPMrXqDIJ_YBlnjjdF5ymH5stPkp4apyCLYRBjJep9M,3021
48
+ vellum_ee/workflows/display/nodes/vellum/guardrail_node.py,sha256=gNa5COUKKO1VioJAg2ZWxpNKbY5aAfHN9QYAcS2HJF0,2194
49
+ vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=JQ-dmkgdBuQisY7ycKd_BNEjaZ6EnHm61S1BALBOUxE,12188
50
+ vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py,sha256=ocpe8sHbievEqUix4a7psjFvTrjGBuGrzz_uGU1wnPw,6461
51
+ vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=LZHY8XZLzHHWUQdk70KHOLMJb17jeZVjvy7VAWP8wzg,4318
52
+ vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=S39Oo8PXHbvSwOjtFcXE-Cg4Dey6GveNtR0wQnzUQ34,3137
53
+ vellum_ee/workflows/display/nodes/vellum/note_node.py,sha256=_jOqj1IFfwYNVBgL4ZbSl46utM-aVGsFBT7joL3YHUw,1047
54
+ vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=32DgNokx8ZvsEn19zE-rz6zFlj1BG8PE8cZ2TlpzWDk,3730
55
55
  vellum_ee/workflows/display/nodes/vellum/retry_node.py,sha256=5xv5OR4xRuI1R5yqJDZTNdCFYY-z8PkTdpWM4ziGjw0,3192
56
- vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=ZHqkwzCRsM0TkZmh3ePHreZAoQXeT-SFS7zbUrSjMsw,12037
57
- vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=hC5hTSRf1f9ppiZ_wXzpcp-jl0fwNAUB9PY8s0AykHs,3131
58
- vellum_ee/workflows/display/nodes/vellum/templating_node.py,sha256=sWupmR7Ri2ZeCLx8713JbuawabR_kpWp_-HwT1tCrtU,3163
56
+ vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=z_D2VOwt1YUkBMiChzsnObhVHIseqGtQzRoMeREMn54,12058
57
+ vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=99Jv6QYAcavrm00MhcCXVDno7ZQzdtfmj_FPvXfMGvk,3152
58
+ vellum_ee/workflows/display/nodes/vellum/templating_node.py,sha256=Ne6BGRdqVhiSrCraY06u2TXMArRmP6Qahj1XBsUgI-4,3184
59
59
  vellum_ee/workflows/display/nodes/vellum/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
- vellum_ee/workflows/display/nodes/vellum/tests/test_api_node.py,sha256=DQAtsabvn6BE6xWwKNHzMOppzoy1-1dssNnrwbHUdRU,1490
60
+ vellum_ee/workflows/display/nodes/vellum/tests/test_api_node.py,sha256=vHV5MThwb0caYfNp5ZoPnYcHwld5CgCOIjTmtxNvDd0,2661
61
61
  vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py,sha256=6_1yVYftVnqXJn3hLUGHlcHvbgKbQgBfS6vYQ6R79oc,10891
62
62
  vellum_ee/workflows/display/nodes/vellum/tests/test_error_node.py,sha256=540FoWMpJ3EN_DPjHsr9ODJWCRVcUa5hZBn-5T2GiHU,1665
63
63
  vellum_ee/workflows/display/nodes/vellum/tests/test_final_output_node.py,sha256=KVftEQxXARlcr-Uuo1ZK_wEHTcTH64OZJ3Ub3mN8x7I,3006
@@ -84,7 +84,7 @@ vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attr
84
84
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py,sha256=SwXRzjdoEZLvkzaRMvRV8_UqbBm0EB_UtAHD_zXKZBY,6303
85
85
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py,sha256=jubGYgLJImOqILd5LjnYJ4B1UMIrToDrQbPZOvaQCX4,40035
86
86
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py,sha256=FLvcD8eoABHUPv08oSpIp_P-65sw2gl4whMXEJJj4f8,6785
87
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=D_ZGMOgr5Ek33ZQagv08b8up1U0Lc0dCgAjnO8ZEpzQ,16336
87
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=NLvHs8dXG3JiSC2HDUT1-Qi0xvRKuxbtcrTRiWI59SU,16909
88
88
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=arl-tho6f0qstUM2ejONEO4ru_6TxCPbni3FS-UZouQ,30108
89
89
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=-BiFVw3JUx_79isQNgAtZB2362oByRcuAuUVK9uzCJI,54204
90
90
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_state_serialization.py,sha256=E1ww97BFoGbnRkxf84TScat5NQhP8nLVrdaOlpGnSKU,8615
@@ -110,8 +110,8 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling
110
110
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=pLCyMScV88DTBXRH7jXaXOEA1GBq8NIipCUFwIAWnwI,2771
111
111
  vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=exT7U-axwtYgFylagScflSQLJEND51qIAx2UATju6JM,6023
112
112
  vellum_ee/workflows/display/tests/workflow_serialization/test_final_output_node_map_reference_serialization.py,sha256=vl3pxUJlrYRA8zzFJ-gRm7fe-5fviLNSIsUC7imnMqk,3502
113
- vellum_ee/workflows/display/tests/workflow_serialization/test_manual_trigger_serialization.py,sha256=sd0lbity6yVIJ3HbMZEcL1wJEYoihqVW2Bjx8YMmrAM,3657
114
- vellum_ee/workflows/display/tests/workflow_serialization/test_slack_trigger_serialization.py,sha256=lBCzNJHmP_Z7_QEnzBO2FYvjJzVm8-lHxb9buivrqZk,4971
113
+ vellum_ee/workflows/display/tests/workflow_serialization/test_manual_trigger_serialization.py,sha256=L4bJWW94eq5cl6pjIaX7pQrDHoF67Gudfx-41dmmd10,2330
114
+ vellum_ee/workflows/display/tests/workflow_serialization/test_slack_trigger_serialization.py,sha256=HCZKF2_wOrn05s94PKWBP8cLl6Uw8j3y7Ec83xxQfLM,2258
115
115
  vellum_ee/workflows/display/tests/workflow_serialization/test_terminal_node_any_serialization.py,sha256=4WAmSEJZlDBLPhsD1f4GwY9ahB9F6qJKGnL6j7ZYlzQ,1740
116
116
  vellum_ee/workflows/display/tests/workflow_serialization/test_web_search_node_serialization.py,sha256=vbDFBrWUPeeW7cxjNA6SXrsHlYcbOAhlQ4C45Vdnr1c,3428
117
117
  vellum_ee/workflows/display/tests/workflow_serialization/test_workflow_input_parameterization_error.py,sha256=vAdmn3YTBDpo55znbydQxsgg9ASqHcvsUPwiBR_7wfo,1461
@@ -120,7 +120,7 @@ vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
120
120
  vellum_ee/workflows/display/utils/auto_layout.py,sha256=f4GiLn_LazweupfqTpubcdtdfE_vrOcmZudSsnYIY9E,3906
121
121
  vellum_ee/workflows/display/utils/events.py,sha256=DE33uoKW78BZtITJ6L22dMZN3KR1BuZBVC98C_gIyzU,1943
122
122
  vellum_ee/workflows/display/utils/exceptions.py,sha256=E8Lvo7LY1BoZ54M_NR_opDjJsAAiCUfow1HgoHcTHmg,989
123
- vellum_ee/workflows/display/utils/expressions.py,sha256=IIieWILv2zGLYTRgeDwgjhtga1ttV-ss2remJ1HBVXA,20688
123
+ vellum_ee/workflows/display/utils/expressions.py,sha256=9rcpoXhUIxcWy407Ziu-zJfP5OEFq3pHIh7XSZZ1Y6E,21169
124
124
  vellum_ee/workflows/display/utils/registry.py,sha256=1qXiBTdsnro6FeCX0FGBEK7CIf6wa--Jt50iZ_nEp_M,3460
125
125
  vellum_ee/workflows/display/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
126
  vellum_ee/workflows/display/utils/tests/test_auto_layout.py,sha256=vfXI769418s9vda5Gb5NFBH747WMOwSgHRXeLCTLVm8,2356
@@ -128,7 +128,7 @@ vellum_ee/workflows/display/utils/tests/test_events.py,sha256=42IEBnMbaQrH8gigw5
128
128
  vellum_ee/workflows/display/utils/vellum.py,sha256=Bt7kdLdXoBsHn5dVEY2uKcF542VL09jwu8J_30rl2vk,6413
129
129
  vellum_ee/workflows/display/vellum.py,sha256=J2mdJZ1sdLW535DDUkq_Vm8Z572vhuxHxVZF9deKSdk,391
130
130
  vellum_ee/workflows/display/workflows/__init__.py,sha256=JTB9ObEV3l4gGGdtfBHwVJtTTKC22uj-a-XjTVwXCyA,148
131
- vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=h2r_w7cvbN3RGrUOf0kAdFDtwhvLlphzkuDjXEWc2Kk,47663
131
+ vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=rY-mK4dLouCUtsq8TAm2ufkODVn8E2_OXix5-Ig0EHA,47629
132
132
  vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=gxz76AeCqgAZ9D2lZeTiZzxY9eMgn3qOSfVgiqYcOh8,2028
133
133
  vellum_ee/workflows/display/workflows/tests/test_workflow_display.py,sha256=lg-c_3P3ldtqWq2VFsk_2Mkn3pVdXWuT59QpH7QwXVs,39764
134
134
  vellum_ee/workflows/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -155,14 +155,14 @@ vellum_ee/workflows/tests/local_workflow/workflow.py,sha256=A4qOzOPNwePYxWbcAgIP
155
155
  vellum_ee/workflows/tests/test_display_meta.py,sha256=PkXJVnMZs9GNooDkd59n4YTBAX3XGPQWeSSVbhehVFM,5112
156
156
  vellum_ee/workflows/tests/test_registry.py,sha256=B8xRIuEyLWfSqrYoPldNQXhKPfe50PllvtAZoI8-uPs,6066
157
157
  vellum_ee/workflows/tests/test_serialize_module.py,sha256=zleQTcGZa5_nzwu4zpFoqEHhk7pb64hGrhObR4anhPQ,4471
158
- vellum_ee/workflows/tests/test_server.py,sha256=RmLE2s9Cs7NejvWf7aPRNuAeEER-hGk-9Q9fYrn5wps,26013
158
+ vellum_ee/workflows/tests/test_server.py,sha256=Ao2htC5i6drtnx1b2HHFM1O-OzVGuTi6PsJorzKF_mM,26284
159
159
  vellum_ee/workflows/tests/test_virtual_files.py,sha256=TJEcMR0v2S8CkloXNmCHA0QW0K6pYNGaIjraJz7sFvY,2762
160
160
  vellum/__init__.py,sha256=6dkyRHmIKuQPzL_z3QLVUrbkAF-HJKDhDSMCnf4ZsKw,49502
161
161
  vellum/client/README.md,sha256=flqu57ubZNTfpq60CdLtJC9gp4WEkyjb_n_eZ4OYf9w,6497
162
162
  vellum/client/__init__.py,sha256=rMnKRqL5-356SBc-rfm56MkO87PuAi2mtcfBszcJU1M,74316
163
163
  vellum/client/core/__init__.py,sha256=lTcqUPXcx4112yLDd70RAPeqq6tu3eFMe1pKOqkW9JQ,1562
164
164
  vellum/client/core/api_error.py,sha256=44vPoTyWN59gonCIZMdzw7M1uspygiLnr3GNFOoVL2Q,614
165
- vellum/client/core/client_wrapper.py,sha256=9B_jlACsiDJUp2QZ0RL-la5fjjWa1aeDXcm_Kgs8Ex4,2840
165
+ vellum/client/core/client_wrapper.py,sha256=9c4zn6yMqgyXRP7ix8lzAHvyY9fwno1tGUAQ2N1anrI,2842
166
166
  vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
167
167
  vellum/client/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
168
168
  vellum/client/core/force_multipart.py,sha256=awxh5MtcRYe74ehY8U76jzv6fYM_w_D3Rur7KQQzSDk,429
@@ -1809,7 +1809,7 @@ vellum/workflows/emitters/vellum_emitter.py,sha256=t4ixrN0NNXrydMP9PVKYvcOMxoMqs
1809
1809
  vellum/workflows/environment/__init__.py,sha256=TJz0m9dwIs6YOwCTeuN0HHsU-ecyjc1OJXx4AFy83EQ,121
1810
1810
  vellum/workflows/environment/environment.py,sha256=Ck3RPKXJvtMGx_toqYQQQF-ZwXm5ijVwJpEPTeIJ4_Q,471
1811
1811
  vellum/workflows/errors/__init__.py,sha256=tWGPu5xyAU8gRb8_bl0fL7OfU3wxQ9UH6qVwy4X4P_Q,113
1812
- vellum/workflows/errors/types.py,sha256=N43BsnhnYZvuPql-Xu86Y6QQ07BxKv5ypD2lq4eugpk,4749
1812
+ vellum/workflows/errors/types.py,sha256=TgWRhhsLLfiQ5Wxk26Dr01clPTYlq3pM-4umDTXLhWQ,4953
1813
1813
  vellum/workflows/events/__init__.py,sha256=V4mh766fyA70WvHelm9kfVZGrUgEKcJ9tJt8EepfQYU,832
1814
1814
  vellum/workflows/events/context.py,sha256=vCfMIPmz4j9Om36rRWa35A_JU_VccWWS52_mZkkqxak,3345
1815
1815
  vellum/workflows/events/exception_handling.py,sha256=2okFtCzrOzaCP-HEwBPMvHn-evlyyE1zRkmIYjR__jQ,1975
@@ -1868,7 +1868,7 @@ vellum/workflows/expressions/tests/test_length.py,sha256=pQA1tYSwqxE6euclboY024N
1868
1868
  vellum/workflows/expressions/tests/test_minus.py,sha256=pq7dvdRGNhSSn95LGNzRErsYUsFk5SpOKHDcSR5QToc,1632
1869
1869
  vellum/workflows/expressions/tests/test_parse_json.py,sha256=zpB_qE5_EwWQL7ULQUJm0o1PRSfWZdAqZNW6Ah13oJE,1059
1870
1870
  vellum/workflows/graph/__init__.py,sha256=3sHlay5d_-uD7j3QJXiGl0WHFZZ_QScRvgyDhN2GhHY,74
1871
- vellum/workflows/graph/graph.py,sha256=lUqREmkROzRtyw1ncRnN7CR9vbztJYR1IgR3hHIG9Xw,14537
1871
+ vellum/workflows/graph/graph.py,sha256=2Yyp6qhm0qcbmbdXS8ZW2jwWFdhSQD2w7hJ2-ltolvs,14687
1872
1872
  vellum/workflows/graph/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1873
1873
  vellum/workflows/graph/tests/test_graph.py,sha256=OLGkEQh-B1CucwSf4nOP79RFXB4R2isHo3LFlr-24yA,20132
1874
1874
  vellum/workflows/inputs/__init__.py,sha256=02pj0IbJkN1AxTreswK39cNi45tA8GWcAAdRJve4cuM,116
@@ -1924,7 +1924,7 @@ vellum/workflows/nodes/displayable/bases/api_node/node.py,sha256=cOYaIqimzDL6TuX
1924
1924
  vellum/workflows/nodes/displayable/bases/api_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1925
1925
  vellum/workflows/nodes/displayable/bases/api_node/tests/test_node.py,sha256=5C59vn_yg4r5EWioKIr658Jr1MSGX3YF4yKJokY37Xc,4726
1926
1926
  vellum/workflows/nodes/displayable/bases/base_prompt_node/__init__.py,sha256=Org3xTvgp1pA0uUXFfnJr29D3HzCey2lEdYF4zbIUgo,70
1927
- vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=w02vgydiwNoKru324QLSkH3BiGUvHTgKbf05BEx945s,4657
1927
+ vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=ZIAXMreHcs3OR-djlkXgqF6tw7-Qfl8KUvjmJ7qRU3U,5204
1928
1928
  vellum/workflows/nodes/displayable/bases/inline_prompt_node/__init__.py,sha256=Hl35IAoepRpE-j4cALaXVJIYTYOF3qszyVbxTj4kS1s,82
1929
1929
  vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=ITxAa1HWF6OPdcKg0DdTK7YP94ezzzWVyZzCRMiybIg,18638
1930
1930
  vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -2027,7 +2027,7 @@ vellum/workflows/resolvers/resolver.py,sha256=3uEYscB_2PHTazc0Y9SzOe_yiQZhVLfey1
2027
2027
  vellum/workflows/resolvers/tests/test_resolver.py,sha256=PnUGzsulo1It_LjjhHsRNiILvvl5G_IaK8ZX56zKC28,6204
2028
2028
  vellum/workflows/resolvers/types.py,sha256=Hndhlk69g6EKLh_LYg5ILepW5U_h_BYNllfzhS9k8p4,237
2029
2029
  vellum/workflows/runner/__init__.py,sha256=i1iG5sAhtpdsrlvwgH6B-m49JsINkiWyPWs8vyT-bqM,72
2030
- vellum/workflows/runner/runner.py,sha256=IYjeFx6_jescg8tEW-et5k96X9EsB6PDw4Kw4Qvy-Xo,45599
2030
+ vellum/workflows/runner/runner.py,sha256=hmr7DIt8Yo2VzVLDVjVBx366foQQVNu6iBBkQjoNNls,46141
2031
2031
  vellum/workflows/sandbox.py,sha256=mezSZmilR_fwR8164n8CEfzlMeQ55IqfapHp4ftImvQ,3212
2032
2032
  vellum/workflows/state/__init__.py,sha256=yUUdR-_Vl7UiixNDYQZ-GEM_kJI9dnOia75TtuNEsnE,60
2033
2033
  vellum/workflows/state/base.py,sha256=8Zr7UIM_eC0O2N6w_1gYqyrjgJ9D9z-VqLFnBETEF7Q,26753
@@ -2060,7 +2060,7 @@ vellum/workflows/types/tests/test_definition.py,sha256=QUI9_Wsm2k-ZxQTXogsB0L4cs
2060
2060
  vellum/workflows/types/tests/test_utils.py,sha256=UnZog59tR577mVwqZRqqWn2fScoOU1H6up0EzS8zYhw,2536
2061
2061
  vellum/workflows/types/utils.py,sha256=mTctHITBybpt4855x32oCKALBEcMNLn-9cCmfEKgJHQ,6498
2062
2062
  vellum/workflows/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2063
- vellum/workflows/utils/functions.py,sha256=whqLOWWRDFVumOoP0IjUpw66y6H9M3iPZe1NSlvm8Gg,13155
2063
+ vellum/workflows/utils/functions.py,sha256=uIg8As0c1BGwXmwectbAQWLWWIWoeHCduGhhoOqQVVU,13157
2064
2064
  vellum/workflows/utils/hmac.py,sha256=JJCczc6pyV6DuE1Oa0QVfYPUN_of3zEYmGFib3OZnrE,1135
2065
2065
  vellum/workflows/utils/names.py,sha256=QtHquoaGqRseu5gg2OcVGI2d_CMcEOvjb9KspwH4C-A,552
2066
2066
  vellum/workflows/utils/pydantic_schema.py,sha256=eR_bBtY-T0pttJP-ARwagSdCOnwPUtiT3cegm2lzDTQ,1310
@@ -2074,13 +2074,13 @@ vellum/workflows/utils/vellum_variables.py,sha256=X3lZn-EoWengRWBWRhTNW7hqbj7LkV
2074
2074
  vellum/workflows/utils/zip.py,sha256=HVg_YZLmBOTXKaDV3Xhaf3V6sYnfqqZXQ8CpuafkbPY,1181
2075
2075
  vellum/workflows/vellum_client.py,sha256=3iDR7VV_NgLSm1iZQCKDvrmfEaX1bOJiU15QrxyHpv0,1237
2076
2076
  vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
2077
- vellum/workflows/workflows/base.py,sha256=2XQMntFPXUO3p1js14TEKun4oNWRmZOzga-pUiv5vVk,30935
2077
+ vellum/workflows/workflows/base.py,sha256=9ILdqYIfB6rIpP-3QeQTOgYeCohjR7xC6c9BqCuAvb4,30977
2078
2078
  vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnadGsrSZGa7t7LpJA,2008
2079
2079
  vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2080
2080
  vellum/workflows/workflows/tests/test_base_workflow.py,sha256=Boa-_m9ii2Qsa1RvVM-VYniF7zCpzGgEGy-OnPZkrHg,23941
2081
2081
  vellum/workflows/workflows/tests/test_context.py,sha256=VJBUcyWVtMa_lE5KxdhgMu0WYNYnUQUDvTF7qm89hJ0,2333
2082
- vellum_ai-1.7.8.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
2083
- vellum_ai-1.7.8.dist-info/METADATA,sha256=nLEmbdMVVg8ZzhJ0MXKOLdXmUF96KvZym2nn-kS7RhE,5547
2084
- vellum_ai-1.7.8.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
2085
- vellum_ai-1.7.8.dist-info/entry_points.txt,sha256=xVavzAKN4iF_NbmhWOlOkHluka0YLkbN_pFQ9pW3gLI,117
2086
- vellum_ai-1.7.8.dist-info/RECORD,,
2082
+ vellum_ai-1.7.10.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
2083
+ vellum_ai-1.7.10.dist-info/METADATA,sha256=vdfRtdqtbtZRBcpr0kWHkp5NLGNlT28vVlfm4GtK6cQ,5548
2084
+ vellum_ai-1.7.10.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
2085
+ vellum_ai-1.7.10.dist-info/entry_points.txt,sha256=xVavzAKN4iF_NbmhWOlOkHluka0YLkbN_pFQ9pW3gLI,117
2086
+ vellum_ai-1.7.10.dist-info/RECORD,,
@@ -46,6 +46,32 @@
46
46
  "type": "DEFAULT"
47
47
  }
48
48
  ],
49
+ "outputs": [
50
+ {
51
+ "id": "99a8d2c4-080f-4605-810e-f5084a52f019",
52
+ "name": "headers",
53
+ "type": "JSON",
54
+ "value": null
55
+ },
56
+ {
57
+ "id": "c5737084-f688-4695-ab81-5f97a6b1a5c2",
58
+ "name": "json",
59
+ "type": "JSON",
60
+ "value": null
61
+ },
62
+ {
63
+ "id": "a2a63a64-75f1-49ba-8743-4db660179ab3",
64
+ "name": "status_code",
65
+ "type": "NUMBER",
66
+ "value": null
67
+ },
68
+ {
69
+ "id": "baa40ce0-35e7-4439-b280-085aaf4f54da",
70
+ "name": "text",
71
+ "type": "STRING",
72
+ "value": null
73
+ }
74
+ ],
49
75
  "attributes": [
50
76
  {
51
77
  "id": "aacb36f1-c980-460d-8002-43bb57128e05",
@@ -747,48 +773,6 @@
747
773
  {
748
774
  "id": "035842e0-34ed-43af-97de-a706e40912ae",
749
775
  "label": "Tool Calling Node",
750
- "display_data": {
751
- "position": {
752
- "x": 0.0,
753
- "y": 0.0
754
- },
755
- "comment": {
756
- "value": "\n A Node that dynamically invokes the provided functions to the underlying Prompt\n\n Attributes:\n ml_model: str - The model to use for tool calling (e.g., \"gpt-4o-mini\")\n blocks: List[PromptBlock] - The prompt blocks to use (same format as InlinePromptNode)\n functions: List[Tool] - The functions that can be called\n prompt_inputs: Optional[EntityInputsInterface] - Mapping of input variable names to values\n parameters: PromptParameters - The parameters for the Prompt\n max_prompt_iterations: Optional[int] - Maximum number of prompt iterations before stopping\n ",
757
- "expanded": true
758
- }
759
- },
760
- "base": {
761
- "name": "BaseNode",
762
- "module": [
763
- "vellum",
764
- "workflows",
765
- "nodes",
766
- "bases",
767
- "base"
768
- ]
769
- },
770
- "definition": {
771
- "name": "ToolCallingNode",
772
- "module": [
773
- "vellum",
774
- "workflows",
775
- "nodes",
776
- "displayable",
777
- "tool_calling_node",
778
- "node"
779
- ]
780
- },
781
- "trigger": {
782
- "id": "f9b4a4ce-68ae-45f4-9e29-38b588abdf97",
783
- "merge_behavior": "AWAIT_ATTRIBUTES"
784
- },
785
- "ports": [
786
- {
787
- "id": "72157fce-fc16-44d8-a00d-506738a20730",
788
- "name": "default",
789
- "type": "DEFAULT"
790
- }
791
- ],
792
776
  "attributes": [
793
777
  {
794
778
  "id": "df3761db-067a-4fe9-9fc3-ba270786fcf6",
@@ -878,31 +862,13 @@
878
862
  }
879
863
  }
880
864
  ],
881
- "outputs": [
882
- {
883
- "id": "c18a8725-21e1-4736-a77c-76d0fc035176",
884
- "name": "text",
885
- "type": "STRING",
886
- "value": null
887
- },
888
- {
889
- "id": "5a9ad073-c670-43d2-9198-a08e9fdda7ad",
890
- "name": "chat_history",
891
- "type": "CHAT_HISTORY",
892
- "value": null
893
- }
894
- ]
895
- },
896
- {
897
- "id": "187ed9ed-ca2b-49e4-943d-ee8da5fad973",
898
- "label": "Web Search Node",
899
865
  "display_data": {
900
866
  "position": {
901
867
  "x": 0.0,
902
868
  "y": 0.0
903
869
  },
904
870
  "comment": {
905
- "value": "\n Used to perform web search using SerpAPI.\n\n query: str - The search query to execute\n api_key: str - SerpAPI authentication key\n num_results: int - Number of search results to return (default: 10)\n location: Optional[str] - Geographic location filter for search\n ",
871
+ "value": "\n A Node that dynamically invokes the provided functions to the underlying Prompt\n\n Attributes:\n ml_model: str - The model to use for tool calling (e.g., \"gpt-4o-mini\")\n blocks: List[PromptBlock] - The prompt blocks to use (same format as InlinePromptNode)\n functions: List[Tool] - The functions that can be called\n prompt_inputs: Optional[EntityInputsInterface] - Mapping of input variable names to values\n parameters: PromptParameters - The parameters for the Prompt\n max_prompt_iterations: Optional[int] - Maximum number of prompt iterations before stopping\n ",
906
872
  "expanded": true
907
873
  }
908
874
  },
@@ -917,27 +883,45 @@
917
883
  ]
918
884
  },
919
885
  "definition": {
920
- "name": "WebSearchNode",
886
+ "name": "ToolCallingNode",
921
887
  "module": [
922
888
  "vellum",
923
889
  "workflows",
924
890
  "nodes",
925
891
  "displayable",
926
- "web_search_node",
892
+ "tool_calling_node",
927
893
  "node"
928
894
  ]
929
895
  },
930
896
  "trigger": {
931
- "id": "036c7a0c-fff3-44f7-b49b-429d8f44f212",
897
+ "id": "f9b4a4ce-68ae-45f4-9e29-38b588abdf97",
932
898
  "merge_behavior": "AWAIT_ATTRIBUTES"
933
899
  },
934
900
  "ports": [
935
901
  {
936
- "id": "ef824748-d00d-41e7-b7b4-d0edc536c3af",
902
+ "id": "72157fce-fc16-44d8-a00d-506738a20730",
937
903
  "name": "default",
938
904
  "type": "DEFAULT"
939
905
  }
940
906
  ],
907
+ "outputs": [
908
+ {
909
+ "id": "c18a8725-21e1-4736-a77c-76d0fc035176",
910
+ "name": "text",
911
+ "type": "STRING",
912
+ "value": null
913
+ },
914
+ {
915
+ "id": "5a9ad073-c670-43d2-9198-a08e9fdda7ad",
916
+ "name": "chat_history",
917
+ "type": "CHAT_HISTORY",
918
+ "value": null
919
+ }
920
+ ]
921
+ },
922
+ {
923
+ "id": "187ed9ed-ca2b-49e4-943d-ee8da5fad973",
924
+ "label": "Web Search Node",
941
925
  "attributes": [
942
926
  {
943
927
  "id": "b5ba3c60-e02c-46c8-b470-d86c4f8f42af",
@@ -984,6 +968,48 @@
984
968
  }
985
969
  }
986
970
  ],
971
+ "display_data": {
972
+ "position": {
973
+ "x": 0.0,
974
+ "y": 0.0
975
+ },
976
+ "comment": {
977
+ "value": "\n Used to perform web search using SerpAPI.\n\n query: str - The search query to execute\n api_key: str - SerpAPI authentication key\n num_results: int - Number of search results to return (default: 10)\n location: Optional[str] - Geographic location filter for search\n ",
978
+ "expanded": true
979
+ }
980
+ },
981
+ "base": {
982
+ "name": "BaseNode",
983
+ "module": [
984
+ "vellum",
985
+ "workflows",
986
+ "nodes",
987
+ "bases",
988
+ "base"
989
+ ]
990
+ },
991
+ "definition": {
992
+ "name": "WebSearchNode",
993
+ "module": [
994
+ "vellum",
995
+ "workflows",
996
+ "nodes",
997
+ "displayable",
998
+ "web_search_node",
999
+ "node"
1000
+ ]
1001
+ },
1002
+ "trigger": {
1003
+ "id": "036c7a0c-fff3-44f7-b49b-429d8f44f212",
1004
+ "merge_behavior": "AWAIT_ATTRIBUTES"
1005
+ },
1006
+ "ports": [
1007
+ {
1008
+ "id": "ef824748-d00d-41e7-b7b4-d0edc536c3af",
1009
+ "name": "default",
1010
+ "type": "DEFAULT"
1011
+ }
1012
+ ],
987
1013
  "outputs": [
988
1014
  {
989
1015
  "id": "704a4ba3-1afe-482d-876a-91dcdbe90fb7",