vellum-ai 0.14.87__py3-none-any.whl → 0.14.89__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 (33) hide show
  1. vellum/client/README.md +33 -10
  2. vellum/client/__init__.py +141 -40
  3. vellum/client/core/client_wrapper.py +18 -5
  4. vellum/client/reference.md +241 -318
  5. vellum/client/resources/ad_hoc/client.py +76 -24
  6. vellum/client/resources/container_images/client.py +14 -6
  7. vellum/client/resources/deployments/client.py +28 -4
  8. vellum/client/resources/document_indexes/client.py +30 -38
  9. vellum/client/resources/documents/client.py +8 -30
  10. vellum/client/resources/folder_entities/client.py +4 -0
  11. vellum/client/resources/metric_definitions/client.py +16 -4
  12. vellum/client/resources/ml_models/client.py +2 -0
  13. vellum/client/resources/organizations/client.py +2 -0
  14. vellum/client/resources/prompts/client.py +26 -6
  15. vellum/client/resources/release_reviews/client.py +2 -0
  16. vellum/client/resources/sandboxes/client.py +10 -10
  17. vellum/client/resources/test_suite_runs/client.py +6 -0
  18. vellum/client/resources/test_suites/client.py +96 -58
  19. vellum/client/resources/workflow_deployments/client.py +16 -0
  20. vellum/client/resources/workflow_sandboxes/client.py +4 -0
  21. vellum/client/resources/workflows/client.py +0 -30
  22. vellum/client/resources/workspace_secrets/client.py +4 -0
  23. vellum/client/resources/workspaces/client.py +2 -0
  24. vellum/workflows/descriptors/utils.py +1 -1
  25. vellum/workflows/nodes/displayable/tool_calling_node/node.py +1 -5
  26. vellum/workflows/nodes/displayable/tool_calling_node/state.py +9 -0
  27. vellum/workflows/nodes/displayable/tool_calling_node/utils.py +102 -56
  28. vellum/workflows/utils/functions.py +1 -1
  29. {vellum_ai-0.14.87.dist-info → vellum_ai-0.14.89.dist-info}/METADATA +1 -1
  30. {vellum_ai-0.14.87.dist-info → vellum_ai-0.14.89.dist-info}/RECORD +33 -32
  31. {vellum_ai-0.14.87.dist-info → vellum_ai-0.14.89.dist-info}/LICENSE +0 -0
  32. {vellum_ai-0.14.87.dist-info → vellum_ai-0.14.89.dist-info}/WHEEL +0 -0
  33. {vellum_ai-0.14.87.dist-info → vellum_ai-0.14.89.dist-info}/entry_points.txt +0 -0
@@ -6,14 +6,18 @@ from pydash import snake_case
6
6
  from vellum import ChatMessage, PromptBlock
7
7
  from vellum.client.types.function_call_chat_message_content import FunctionCallChatMessageContent
8
8
  from vellum.client.types.function_call_chat_message_content_value import FunctionCallChatMessageContentValue
9
+ from vellum.client.types.prompt_output import PromptOutput
9
10
  from vellum.client.types.string_chat_message_content import StringChatMessageContent
10
11
  from vellum.client.types.variable_prompt_block import VariablePromptBlock
12
+ from vellum.workflows.context import execution_context, get_parent_context
11
13
  from vellum.workflows.errors.types import WorkflowErrorCode
14
+ from vellum.workflows.events.workflow import is_workflow_event
12
15
  from vellum.workflows.exceptions import NodeException
13
16
  from vellum.workflows.nodes.bases import BaseNode
14
17
  from vellum.workflows.nodes.displayable.inline_prompt_node.node import InlinePromptNode
15
18
  from vellum.workflows.nodes.displayable.subworkflow_deployment_node.node import SubworkflowDeploymentNode
16
- from vellum.workflows.outputs.base import BaseOutput
19
+ from vellum.workflows.nodes.displayable.tool_calling_node.state import ToolCallingState
20
+ from vellum.workflows.outputs.base import BaseOutput, BaseOutputs
17
21
  from vellum.workflows.ports.port import Port
18
22
  from vellum.workflows.references.lazy import LazyReference
19
23
  from vellum.workflows.state.context import WorkflowContext
@@ -21,6 +25,7 @@ from vellum.workflows.state.encoder import DefaultStateEncoder
21
25
  from vellum.workflows.types.core import EntityInputsInterface, MergeBehavior, Tool
22
26
  from vellum.workflows.types.definition import DeploymentDefinition
23
27
  from vellum.workflows.types.generics import is_workflow_class
28
+ from vellum.workflows.workflows.event_filters import all_workflow_event_filter
24
29
 
25
30
  CHAT_HISTORY_VARIABLE = "chat_history"
26
31
 
@@ -31,7 +36,7 @@ class FunctionNode(BaseNode):
31
36
  pass
32
37
 
33
38
 
34
- class ToolRouterNode(InlinePromptNode):
39
+ class ToolRouterNode(InlinePromptNode[ToolCallingState]):
35
40
  max_prompt_iterations: Optional[int] = 5
36
41
 
37
42
  class Trigger(InlinePromptNode.Trigger):
@@ -73,6 +78,48 @@ class ToolRouterNode(InlinePromptNode):
73
78
  yield output
74
79
 
75
80
 
81
+ class DynamicSubworkflowDeploymentNode(SubworkflowDeploymentNode[ToolCallingState]):
82
+ """Node that executes a deployment definition with function call output."""
83
+
84
+ function_call_output: List[PromptOutput]
85
+
86
+ def run(self) -> Iterator[BaseOutput]:
87
+ if self.function_call_output and len(self.function_call_output) > 0:
88
+ function_call = self.function_call_output[0]
89
+ if function_call.type == "FUNCTION_CALL" and function_call.value is not None:
90
+ arguments = function_call.value.arguments
91
+ else:
92
+ arguments = {}
93
+ else:
94
+ arguments = {}
95
+
96
+ # Mypy doesn't like instance assignments of class attributes. It's safe in our case tho bc it's what
97
+ # we do in the `__init__` method. Long term, instead of the function_call_output attribute above, we
98
+ # want to do:
99
+ # ```python
100
+ # subworkflow_inputs = tool_router_node.Outputs.results[0]['value']['arguments'].if_(
101
+ # tool_router_node.Outputs.results[0]['type'].equals('FUNCTION_CALL'),
102
+ # {},
103
+ # )
104
+ # ```
105
+ self.subworkflow_inputs = arguments # type:ignore[misc]
106
+
107
+ # Call the parent run method to execute the subworkflow
108
+ outputs = {}
109
+ for output in super().run():
110
+ if output.is_fulfilled:
111
+ outputs[output.name] = output.value
112
+ yield output
113
+
114
+ # Add the result to the chat history
115
+ self.state.chat_history.append(
116
+ ChatMessage(
117
+ role="FUNCTION",
118
+ content=StringChatMessageContent(value=json.dumps(outputs, cls=DefaultStateEncoder)),
119
+ )
120
+ )
121
+
122
+
76
123
  def create_tool_router_node(
77
124
  ml_model: str,
78
125
  blocks: List[PromptBlock],
@@ -159,48 +206,13 @@ def create_function_node(
159
206
  deployment = function.deployment_id or function.deployment_name
160
207
  release_tag = function.release_tag
161
208
 
162
- def execute_workflow_deployment_function(self) -> BaseNode.Outputs:
163
- function_call_output = self.state.meta.node_outputs.get(tool_router_node.Outputs.results)
164
- if function_call_output and len(function_call_output) > 0:
165
- function_call = function_call_output[0]
166
- arguments = function_call.value.arguments
167
- else:
168
- arguments = {}
169
-
170
- subworkflow_node = type(
171
- f"DynamicSubworkflowNode_{deployment}",
172
- (SubworkflowDeploymentNode,),
173
- {
174
- "deployment": deployment,
175
- "release_tag": release_tag,
176
- "subworkflow_inputs": arguments,
177
- "__module__": __name__,
178
- },
179
- )
180
-
181
- node_instance = subworkflow_node(
182
- context=WorkflowContext.create_from(self._context),
183
- state=self.state,
184
- )
185
-
186
- outputs = {}
187
- for output in node_instance.run():
188
- outputs[output.name] = output.value
189
-
190
- self.state.chat_history.append(
191
- ChatMessage(
192
- role="FUNCTION",
193
- content=StringChatMessageContent(value=json.dumps(outputs, cls=DefaultStateEncoder)),
194
- )
195
- )
196
-
197
- return self.Outputs()
198
-
199
209
  node = type(
200
- f"WorkflowDeploymentNode_{deployment}",
201
- (FunctionNode,),
210
+ f"DynamicSubworkflowDeploymentNode_{deployment}",
211
+ (DynamicSubworkflowDeploymentNode,),
202
212
  {
203
- "run": execute_workflow_deployment_function,
213
+ "deployment": deployment,
214
+ "release_tag": release_tag,
215
+ "function_call_output": tool_router_node.Outputs.results,
204
216
  "__module__": __name__,
205
217
  },
206
218
  )
@@ -210,26 +222,60 @@ def create_function_node(
210
222
  elif is_workflow_class(function):
211
223
  # Create a class-level wrapper that calls the original function
212
224
  def execute_inline_workflow_function(self) -> BaseNode.Outputs:
213
- outputs = self.state.meta.node_outputs.get(tool_router_node.Outputs.text)
214
-
215
- outputs = json.loads(outputs)
216
- arguments = outputs["arguments"]
225
+ function_call_output = self.state.meta.node_outputs.get(tool_router_node.Outputs.results)
226
+ if function_call_output and len(function_call_output) > 0:
227
+ function_call = function_call_output[0]
228
+ arguments = function_call.value.arguments
229
+ else:
230
+ arguments = {}
217
231
 
218
232
  # Call the function based on its type
219
233
  inputs_instance = function.get_inputs_class()(**arguments)
220
- workflow = function(context=WorkflowContext.create_from(self._context))
221
- terminal_event = workflow.run(
222
- inputs=inputs_instance,
223
- )
224
- if terminal_event.name == "workflow.execution.paused":
234
+
235
+ with execution_context(parent_context=get_parent_context()):
236
+ workflow = function(
237
+ parent_state=self.state,
238
+ context=WorkflowContext.create_from(self._context),
239
+ )
240
+ subworkflow_stream = workflow.stream(
241
+ inputs=inputs_instance,
242
+ event_filter=all_workflow_event_filter,
243
+ node_output_mocks=self._context._get_all_node_output_mocks(),
244
+ )
245
+
246
+ outputs: Optional[BaseOutputs] = None
247
+ exception: Optional[NodeException] = None
248
+
249
+ for event in subworkflow_stream:
250
+ self._context._emit_subworkflow_event(event)
251
+ if exception:
252
+ continue
253
+
254
+ if not is_workflow_event(event):
255
+ continue
256
+ if event.workflow_definition != function:
257
+ continue
258
+
259
+ if event.name == "workflow.execution.fulfilled":
260
+ outputs = event.outputs
261
+ elif event.name == "workflow.execution.rejected":
262
+ exception = NodeException.of(event.error)
263
+ elif event.name == "workflow.execution.paused":
264
+ exception = NodeException(
265
+ code=WorkflowErrorCode.INVALID_OUTPUTS,
266
+ message="Subworkflow unexpectedly paused",
267
+ )
268
+
269
+ if exception:
270
+ raise exception
271
+
272
+ if outputs is None:
225
273
  raise NodeException(
274
+ message="Expected to receive outputs from inline subworkflow",
226
275
  code=WorkflowErrorCode.INVALID_OUTPUTS,
227
- message="Subworkflow unexpectedly paused",
228
276
  )
229
- elif terminal_event.name == "workflow.execution.fulfilled":
230
- result = terminal_event.outputs
231
- elif terminal_event.name == "workflow.execution.rejected":
232
- raise NodeException(message=terminal_event.error.message, code=terminal_event.error.code)
277
+
278
+ result = outputs
233
279
 
234
280
  self.state.chat_history.append(
235
281
  ChatMessage(
@@ -82,7 +82,7 @@ def _compile_default_value(default: Any) -> Any:
82
82
  if isinstance(default, BaseModel):
83
83
  return {
84
84
  field_name: _compile_default_value(getattr(default, field_name))
85
- for field_name in default.model_fields.keys()
85
+ for field_name in default.__class__.model_fields.keys()
86
86
  }
87
87
 
88
88
  return default
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vellum-ai
3
- Version: 0.14.87
3
+ Version: 0.14.89
4
4
  Summary:
5
5
  License: MIT
6
6
  Requires-Python: >=3.9,<4.0
@@ -140,11 +140,11 @@ vellum_ee/workflows/tests/test_serialize_module.py,sha256=EVrCRAP0lpvd0GIDlg2tnG
140
140
  vellum_ee/workflows/tests/test_server.py,sha256=SsOkS6sGO7uGC4mxvk4iv8AtcXs058P9hgFHzTWmpII,14519
141
141
  vellum_ee/workflows/tests/test_virtual_files.py,sha256=TJEcMR0v2S8CkloXNmCHA0QW0K6pYNGaIjraJz7sFvY,2762
142
142
  vellum/__init__.py,sha256=4RAS94IJNzJ0I4ywijtwTf9hPuwjHWjOs4ObAioCZF4,42908
143
- vellum/client/README.md,sha256=47bNYmRLSISR1ING58kXXZ88nFLPGFv0bAspBtuXG3g,4306
144
- vellum/client/__init__.py,sha256=tKLc-F8I8_62RSZg7J7Lvo1dUQ_or7DGsDhbMyhWfGA,120958
143
+ vellum/client/README.md,sha256=Dle5iytCXxP1pNeNd7uZyhFo0rl7tp7vU7s8gmi10OQ,4863
144
+ vellum/client/__init__.py,sha256=EQgVGB7vcK4XzQyTSTV0SHyaF8UlaeuSEtTAKgGv-aU,124904
145
145
  vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
146
146
  vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
147
- vellum/client/core/client_wrapper.py,sha256=ReGrzx3YGXetWtARuAHO8Rr64rj4PwB7DtupM9EEfkE,1916
147
+ vellum/client/core/client_wrapper.py,sha256=-g25WBC_j71FLmLSiIoBkcV7S40V_wCKP9Zk-1ZHXNw,2387
148
148
  vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
149
149
  vellum/client/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
150
150
  vellum/client/core/http_client.py,sha256=cKs2w0ybDBk1wHQf-fTALm_MmvaMe3cZKcYJxqmCxkE,19539
@@ -160,58 +160,58 @@ vellum/client/errors/bad_request_error.py,sha256=_EbO8mWqN9kFZPvIap8qa1lL_EWkRcs
160
160
  vellum/client/errors/forbidden_error.py,sha256=QO1kKlhClAPES6zsEK7g9pglWnxn3KWaOCAawWOg6Aw,263
161
161
  vellum/client/errors/internal_server_error.py,sha256=8USCagXyJJ1MOm9snpcXIUt6eNXvrd_aq7Gfcu1vlOI,268
162
162
  vellum/client/errors/not_found_error.py,sha256=tBVCeBC8n3C811WHRj_n-hs3h8MqwR5gp0vLiobk7W8,262
163
- vellum/client/reference.md,sha256=7GWLlL9oly8ZpNifMwfP8DYqKu_j2b0JdKcgJxc98ZA,91496
163
+ vellum/client/reference.md,sha256=9pJQHAujbmxivya7ByIC6YD2xP6VB8keOwLRcvLaB9Q,92785
164
164
  vellum/client/resources/__init__.py,sha256=XgQao4rJxyYu71j64RFIsshz4op9GE8-i-C5GCv-KVE,1555
165
165
  vellum/client/resources/ad_hoc/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
166
- vellum/client/resources/ad_hoc/client.py,sha256=1jTid6izei9QcnZHjx8jBxAIf9ig2y0vpFPPX6WJM6A,26301
166
+ vellum/client/resources/ad_hoc/client.py,sha256=iPKL9L3BpQhiGhjCD20Q99dHZrDnkfKKxMExVOoMkGU,28001
167
167
  vellum/client/resources/container_images/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
168
- vellum/client/resources/container_images/client.py,sha256=N9Xe-IyuZigbZum3MZFqgZrVKgfNOTGFxK83alHra04,15181
168
+ vellum/client/resources/container_images/client.py,sha256=0QkNLozVNTwEi82TYpERW1JY6QgUS-_zx379Mv6A7b8,15539
169
169
  vellum/client/resources/deployments/__init__.py,sha256=m64MNuPx3qVazOnTNwOY8oEeDrAkNwMJvUEe5xoMDvs,239
170
- vellum/client/resources/deployments/client.py,sha256=pJQLqwLbQSZiaSHeQMnSO52cVhwiyqBPsnqbOJt2eso,43708
170
+ vellum/client/resources/deployments/client.py,sha256=6NHWM8BBSLZU2blck4g2aqAbf7tgwvJcQe6vir_ZqM8,44664
171
171
  vellum/client/resources/deployments/types/__init__.py,sha256=29GVdoLOJsADSSSqZwb6CQPeEmPjkKrbsWfru1bemj8,321
172
172
  vellum/client/resources/deployments/types/deployments_list_request_status.py,sha256=CxlQD16KZXme7x31YYCe_3aAgEueutDTeJo5A4Au-aU,174
173
173
  vellum/client/resources/deployments/types/list_deployment_release_tags_request_source.py,sha256=hRGgWMYZL9uKCmD_2dU8-u9RCPUUGItpNn1tUY-NXKY,180
174
174
  vellum/client/resources/document_indexes/__init__.py,sha256=YpOl_9IV7xOlH4OmusQxtAJB11kxQfCSMDyT1_UD0oM,165
175
- vellum/client/resources/document_indexes/client.py,sha256=2zt85keRD9DEN9Z-dkHn7GXogtqvGcTwz49cW9IyE4k,35972
175
+ vellum/client/resources/document_indexes/client.py,sha256=eFu0_dN4s0qYyqw3v4oOFEZaah1JTirSXM4f3ozRP_I,35512
176
176
  vellum/client/resources/document_indexes/types/__init__.py,sha256=IoFqKHN_VBdEhC7VL8_6Jbatrn0e0zuYEJAJUahcUR0,196
177
177
  vellum/client/resources/document_indexes/types/document_indexes_list_request_status.py,sha256=sfUEB0cvOSmlE2iITqnMVyHv05Zy2fWP4QjCIYqMg0M,178
178
178
  vellum/client/resources/documents/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
179
- vellum/client/resources/documents/client.py,sha256=g9fOsSxk7SLwFw5K7c-YV-KWSmz1-Ng69Rpi16G3U1E,26436
179
+ vellum/client/resources/documents/client.py,sha256=v_4nRgdq2BNEvY7jgZdxG_-pMlbi__aruKgZTPjnqe8,26248
180
180
  vellum/client/resources/folder_entities/__init__.py,sha256=QOp7UMMB3a32GrfVaud35ECn4fqPBKXxCyClsDgd6GE,175
181
- vellum/client/resources/folder_entities/client.py,sha256=wlmGYzrgM0GwvpVqNXBzblUdaDm4foFLto5OZ53joJk,11288
181
+ vellum/client/resources/folder_entities/client.py,sha256=nZ03GGrkeMdWDFbSvI1z9mkC3w4tcticQt-Esb88g3M,11464
182
182
  vellum/client/resources/folder_entities/types/__init__.py,sha256=cHabrupjC-HL3kj-UZ9WdVzqHoQHCu6QsLFB3wlOs7k,212
183
183
  vellum/client/resources/folder_entities/types/folder_entities_list_request_entity_status.py,sha256=nK9b9fRSeCfjn2V2Hifl1IbhFeVsNkoeXJ8rCAPADFg,183
184
184
  vellum/client/resources/metric_definitions/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
185
- vellum/client/resources/metric_definitions/client.py,sha256=BLPqOD8QPrA_Dje4CDg6Nl7N8LKtzA9-fJ64lbT4FXQ,10048
185
+ vellum/client/resources/metric_definitions/client.py,sha256=o5CbM8YRyw6tsJJsJZH5vPMrAISPivBFM_pB2bhvctc,10462
186
186
  vellum/client/resources/ml_models/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
187
- vellum/client/resources/ml_models/client.py,sha256=XIYapTEY6GRNr7V0Kjy5bEeKmrhv9ul8qlQY2A5LFqQ,3872
187
+ vellum/client/resources/ml_models/client.py,sha256=7F6waUsTXqUuqgpHEvPMPMktClfCWPKEfU1ZPUlXOMg,3960
188
188
  vellum/client/resources/organizations/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
189
- vellum/client/resources/organizations/client.py,sha256=Uye92moqjAcOCs4astmuFpT92QdC5SLMunA-C8_G-gA,3675
189
+ vellum/client/resources/organizations/client.py,sha256=5Y4Umjlpm24zgvG_PYHqJqpvjmEwG5kH-CM5L4ZguCE,3763
190
190
  vellum/client/resources/prompts/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
191
- vellum/client/resources/prompts/client.py,sha256=Kr_AZdPQUSesk_JtjHl6c7vIWp7TG2PcKC74NrpW6rQ,15060
191
+ vellum/client/resources/prompts/client.py,sha256=Ai2179Qeq3H3f7HjeAZ_kjsk6-LryLE6QOEa5wfgnVk,15812
192
192
  vellum/client/resources/release_reviews/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
193
- vellum/client/resources/release_reviews/client.py,sha256=nb-EC7c7Y0Rklvg6CnlUKO1EWrnK26osnYJ9Z5Yw9fA,5094
193
+ vellum/client/resources/release_reviews/client.py,sha256=nlTpT--FT3D8pDnTyZtjV2QcGZ-4MB1LuM6KfkCmlXM,5182
194
194
  vellum/client/resources/sandboxes/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
195
- vellum/client/resources/sandboxes/client.py,sha256=_LInSBP67ON8ykUcdiUd5vxHYZkAPX4RkJbR5Ph6l_s,18026
195
+ vellum/client/resources/sandboxes/client.py,sha256=EVhx8n8Lc_YL0Aw7fAsPHr0ZngfjgSWT2eheo9DE36c,18018
196
196
  vellum/client/resources/test_suite_runs/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
197
- vellum/client/resources/test_suite_runs/client.py,sha256=xHN3c9eIaSGWoeEdD2Jmi-e4dplSHxuNpvh-oqW1VQc,15306
197
+ vellum/client/resources/test_suite_runs/client.py,sha256=jrZtWgZKyOLHnEScn6AmCWTFUVV3cUisuH7LgFSWaGs,15570
198
198
  vellum/client/resources/test_suites/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
199
- vellum/client/resources/test_suites/client.py,sha256=aBReUOWcerq7vnjXEDbpDH1OMc6INMr0XUBaXE07umw,25989
199
+ vellum/client/resources/test_suites/client.py,sha256=yFwr8HVOSKihJRtoHekNUDkNZejeYSuf5m4-EHomUuc,27929
200
200
  vellum/client/resources/workflow_deployments/__init__.py,sha256=_duH6m1CDWcfqX6DTBNjO3ar4Xrl-f5PozMaTcT4Kow,251
201
- vellum/client/resources/workflow_deployments/client.py,sha256=oky4zbR4K3tTf2Z0cQ-E2tfxas7agnvgcJmebSFlSBs,35498
201
+ vellum/client/resources/workflow_deployments/client.py,sha256=_a6MsQ2Dyv5uDsRYXjj6NAHYdMb290TDqpTand5akhE,36202
202
202
  vellum/client/resources/workflow_deployments/types/__init__.py,sha256=W7DKJ1nduwhRckYLvH7wHLdaGH9MXHTZkxwG7FdTngY,340
203
203
  vellum/client/resources/workflow_deployments/types/list_workflow_release_tags_request_source.py,sha256=LPETHLX9Ygha_JRT9oWZAZR6clv-W1tTelXzktkTBX8,178
204
204
  vellum/client/resources/workflow_deployments/types/workflow_deployments_list_request_status.py,sha256=FXVkVmGM6DZ2RpTGnZXWJYiVlLQ-K5fDtX3WMaBPaWk,182
205
205
  vellum/client/resources/workflow_sandboxes/__init__.py,sha256=OR3wE3pTgsZlTS-0ukeMWzSuEZF8PszuQTCHDh6JybI,175
206
- vellum/client/resources/workflow_sandboxes/client.py,sha256=XfMcbvSTF1_iTGIXsk1Fhgc37GFXGqLK7a5LUDxuI3s,13094
206
+ vellum/client/resources/workflow_sandboxes/client.py,sha256=tpIjyuvVAnghmUu_gI9lpv4NbFa3dvmy26a_Y69UyOI,13270
207
207
  vellum/client/resources/workflow_sandboxes/types/__init__.py,sha256=EaGVRU1w6kJiiHrbZOeEa0c3ggjfgv_jBqsyOkCRWOI,212
208
208
  vellum/client/resources/workflow_sandboxes/types/list_workflow_sandbox_examples_request_tag.py,sha256=TEwWit20W3X-zWPPLAhmUG05UudG9gaBSJ4Q4-rNJws,188
209
209
  vellum/client/resources/workflows/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
210
- vellum/client/resources/workflows/client.py,sha256=uDC61aybVmgxPiLKuLpAB-fK3sagnFFX06zzmQngInA,11285
210
+ vellum/client/resources/workflows/client.py,sha256=a3DwkUn8FBve-Wr139MSms18EPZPdnTkDsMqyTUQEYc,10725
211
211
  vellum/client/resources/workspace_secrets/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
212
- vellum/client/resources/workspace_secrets/client.py,sha256=zlBdbeTP6sqvtyl_DlrpfG-W5hSP7tJ1NYLSygi4CLU,8205
212
+ vellum/client/resources/workspace_secrets/client.py,sha256=l1FOj0f-IB5_oQ7iWiHopFK3lDXBqiaIc9g10W9PHFU,8381
213
213
  vellum/client/resources/workspaces/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
214
- vellum/client/resources/workspaces/client.py,sha256=RthwzN1o-Jxwg5yyNNodavFyNUSxfLoTv26w3mRR5g8,3595
214
+ vellum/client/resources/workspaces/client.py,sha256=61eFS8USOtHf4cFoT3dZmAMs6KGAVPbXjAolws2ftsQ,3683
215
215
  vellum/client/types/__init__.py,sha256=NgEh6I44X4Hwrd4lIswu7QPHzuWoxmej9p4JYsSJJb8,65043
216
216
  vellum/client/types/ad_hoc_execute_prompt_event.py,sha256=bCjujA2XsOgyF3bRZbcEqV2rOIymRgsLoIRtZpB14xg,607
217
217
  vellum/client/types/ad_hoc_expand_meta.py,sha256=1gv-NCsy_6xBYupLvZH979yf2VMdxAU-l0y0ynMKZaw,1331
@@ -1523,7 +1523,7 @@ vellum/workflows/descriptors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
1523
1523
  vellum/workflows/descriptors/base.py,sha256=X47a4TClHknsnjs53DkiXnop_5uLGVor487oxhHuGo4,14902
1524
1524
  vellum/workflows/descriptors/exceptions.py,sha256=gUy4UD9JFUKSeQnQpeuDSLiRqWjWiIsxLahB7p_q3JY,54
1525
1525
  vellum/workflows/descriptors/tests/test_utils.py,sha256=HJ5DoRz0sJvViGxyZ_FtytZjxN2J8xTkGtaVwCy6Q90,6928
1526
- vellum/workflows/descriptors/utils.py,sha256=gmVXJjf2yWmvlYey41J2FZHeSou0JuCHKb3826K_Jok,3838
1526
+ vellum/workflows/descriptors/utils.py,sha256=1siECBf6AI54gwwUwkF6mP9rYsRryUGaOYBbMpQaceM,3848
1527
1527
  vellum/workflows/edges/__init__.py,sha256=wSkmAnz9xyi4vZwtDbKxwlplt2skD7n3NsxkvR_pUus,50
1528
1528
  vellum/workflows/edges/edge.py,sha256=N0SnY3gKVuxImPAdCbPMPlHJIXbkQ3fwq_LbJRvVMFc,677
1529
1529
  vellum/workflows/emitters/__init__.py,sha256=YyOgaoLtVW8eFNEWODzCYb0HzL0PoSeNRf4diJ1Y0dk,80
@@ -1679,11 +1679,12 @@ vellum/workflows/nodes/displayable/tests/test_search_node_error_handling.py,sha2
1679
1679
  vellum/workflows/nodes/displayable/tests/test_search_node_wth_text_output.py,sha256=VepO5z1277c1y5N6LLIC31nnWD1aak2m5oPFplfJHHs,6935
1680
1680
  vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py,sha256=dc3EEn1sOICpr3GdS8eyeFtExaGwWWcw9eHSdkRhQJU,2584
1681
1681
  vellum/workflows/nodes/displayable/tool_calling_node/__init__.py,sha256=3n0-ysmFKsr40CVxPthc0rfJgqVJeZuUEsCmYudLVRg,117
1682
- vellum/workflows/nodes/displayable/tool_calling_node/node.py,sha256=7MqEtw-RejpJ5Uer11tIFKRtklC4DfiWVx2-tpnA1Gg,6310
1682
+ vellum/workflows/nodes/displayable/tool_calling_node/node.py,sha256=i0RQuhJfrO8g_Cz4hug-rHiW1G-IjJiJI6BNkdxsoYg,6204
1683
+ vellum/workflows/nodes/displayable/tool_calling_node/state.py,sha256=oQg_GAtc349nPB5BL_oeDYYD7q1qSDPAqjj8iA8OoAw,215
1683
1684
  vellum/workflows/nodes/displayable/tool_calling_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1684
1685
  vellum/workflows/nodes/displayable/tool_calling_node/tests/test_node.py,sha256=3cCCIz-quneCVl3w8XnGxzyHx-nn_jGTKCbSH9jkYT0,7824
1685
1686
  vellum/workflows/nodes/displayable/tool_calling_node/tests/test_utils.py,sha256=eu6WTyENhGLg9pGp_j69rysZjf_qiQXske1YdZn9PzU,1718
1686
- vellum/workflows/nodes/displayable/tool_calling_node/utils.py,sha256=6_SL3yOCh798MpPSuqGkIaLFeah6B7lj1bXI7_1hZ3s,11860
1687
+ vellum/workflows/nodes/displayable/tool_calling_node/utils.py,sha256=xdPJ35GvGG26oMKtZZ_KcpaEr7Moz0kEBQRIzCZZXbA,13901
1687
1688
  vellum/workflows/nodes/experimental/README.md,sha256=eF6DfIL8t-HbF9-mcofOMymKrraiBHDLKTlnBa51ZiE,284
1688
1689
  vellum/workflows/nodes/experimental/__init__.py,sha256=k7VQEyvgEdnrEZ-icXx3fiByPnyMOnMXNGGuqacyyik,91
1689
1690
  vellum/workflows/nodes/experimental/openai_chat_completion_node/__init__.py,sha256=lsyD9laR9p7kx5-BXGH2gUTM242UhKy8SMV0SR6S2iE,90
@@ -1741,7 +1742,7 @@ vellum/workflows/types/tests/test_definition.py,sha256=5wh_WEnE51epkoo-4PE-JbPlg
1741
1742
  vellum/workflows/types/tests/test_utils.py,sha256=UnZog59tR577mVwqZRqqWn2fScoOU1H6up0EzS8zYhw,2536
1742
1743
  vellum/workflows/types/utils.py,sha256=mTctHITBybpt4855x32oCKALBEcMNLn-9cCmfEKgJHQ,6498
1743
1744
  vellum/workflows/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1744
- vellum/workflows/utils/functions.py,sha256=ZN0rrIBF4R_KNt1CbRPVNGR36xEMUa1T7FkgZioou-Y,7185
1745
+ vellum/workflows/utils/functions.py,sha256=Gi08SYaTfLF04slbY_YcfP5erIMwtFgtYa59vhWez9k,7195
1745
1746
  vellum/workflows/utils/names.py,sha256=QLUqfJ1tmSEeUwBKTTiv_Qk3QGbInC2RSmlXfGXc8Wo,380
1746
1747
  vellum/workflows/utils/pydantic_schema.py,sha256=eR_bBtY-T0pttJP-ARwagSdCOnwPUtiT3cegm2lzDTQ,1310
1747
1748
  vellum/workflows/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1758,8 +1759,8 @@ vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnad
1758
1759
  vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1759
1760
  vellum/workflows/workflows/tests/test_base_workflow.py,sha256=ptMntHzVyy8ZuzNgeTuk7hREgKQ5UBdgq8VJFSGaW4Y,20832
1760
1761
  vellum/workflows/workflows/tests/test_context.py,sha256=VJBUcyWVtMa_lE5KxdhgMu0WYNYnUQUDvTF7qm89hJ0,2333
1761
- vellum_ai-0.14.87.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1762
- vellum_ai-0.14.87.dist-info/METADATA,sha256=PwSEW73LUo3jQfScYBT8yLOMUmskjprvWGDFbtHN47c,5556
1763
- vellum_ai-0.14.87.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1764
- vellum_ai-0.14.87.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1765
- vellum_ai-0.14.87.dist-info/RECORD,,
1762
+ vellum_ai-0.14.89.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1763
+ vellum_ai-0.14.89.dist-info/METADATA,sha256=PUlFnfoQJiH5Jo_qs4triR8bNZHxQvEY_0pgGgM1jQA,5556
1764
+ vellum_ai-0.14.89.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1765
+ vellum_ai-0.14.89.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1766
+ vellum_ai-0.14.89.dist-info/RECORD,,