vellum-ai 1.0.9__py3-none-any.whl → 1.0.11__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- vellum/client/core/client_wrapper.py +2 -2
- vellum/workflows/descriptors/base.py +31 -1
- vellum/workflows/descriptors/utils.py +19 -1
- vellum/workflows/emitters/__init__.py +2 -0
- vellum/workflows/emitters/base.py +17 -0
- vellum/workflows/emitters/vellum_emitter.py +138 -0
- vellum/workflows/expressions/accessor.py +23 -15
- vellum/workflows/expressions/add.py +41 -0
- vellum/workflows/expressions/length.py +35 -0
- vellum/workflows/expressions/minus.py +41 -0
- vellum/workflows/expressions/tests/test_add.py +72 -0
- vellum/workflows/expressions/tests/test_length.py +38 -0
- vellum/workflows/expressions/tests/test_minus.py +72 -0
- vellum/workflows/integrations/composio_service.py +10 -2
- vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py +1 -1
- vellum/workflows/nodes/displayable/inline_prompt_node/node.py +2 -2
- vellum/workflows/nodes/displayable/tool_calling_node/node.py +24 -20
- vellum/workflows/nodes/displayable/tool_calling_node/state.py +2 -0
- vellum/workflows/nodes/displayable/tool_calling_node/tests/test_composio_service.py +92 -0
- vellum/workflows/nodes/displayable/tool_calling_node/tests/test_node.py +25 -10
- vellum/workflows/nodes/displayable/tool_calling_node/tests/test_utils.py +7 -5
- vellum/workflows/nodes/displayable/tool_calling_node/utils.py +141 -86
- vellum/workflows/types/core.py +3 -5
- vellum/workflows/types/definition.py +2 -6
- vellum/workflows/types/tests/test_definition.py +5 -2
- {vellum_ai-1.0.9.dist-info → vellum_ai-1.0.11.dist-info}/METADATA +1 -1
- {vellum_ai-1.0.9.dist-info → vellum_ai-1.0.11.dist-info}/RECORD +34 -27
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_composio_serialization.py +1 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_serialization.py +0 -5
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_serialization.py +0 -5
- vellum_ee/workflows/display/utils/expressions.py +12 -0
- {vellum_ai-1.0.9.dist-info → vellum_ai-1.0.11.dist-info}/LICENSE +0 -0
- {vellum_ai-1.0.9.dist-info → vellum_ai-1.0.11.dist-info}/WHEEL +0 -0
- {vellum_ai-1.0.9.dist-info → vellum_ai-1.0.11.dist-info}/entry_points.txt +0 -0
@@ -5,6 +5,8 @@ from typing import Any, Callable, Dict, Iterator, List, Optional, Type, Union, c
|
|
5
5
|
from pydash import snake_case
|
6
6
|
|
7
7
|
from vellum import ChatMessage, PromptBlock
|
8
|
+
from vellum.client.types.array_chat_message_content import ArrayChatMessageContent
|
9
|
+
from vellum.client.types.array_chat_message_content_item import ArrayChatMessageContentItem
|
8
10
|
from vellum.client.types.function_call_chat_message_content import FunctionCallChatMessageContent
|
9
11
|
from vellum.client.types.function_call_chat_message_content_value import FunctionCallChatMessageContentValue
|
10
12
|
from vellum.client.types.function_definition import FunctionDefinition
|
@@ -28,7 +30,7 @@ from vellum.workflows.ports.port import Port
|
|
28
30
|
from vellum.workflows.references.lazy import LazyReference
|
29
31
|
from vellum.workflows.state import BaseState
|
30
32
|
from vellum.workflows.state.encoder import DefaultStateEncoder
|
31
|
-
from vellum.workflows.types.core import EntityInputsInterface, MergeBehavior, Tool,
|
33
|
+
from vellum.workflows.types.core import EntityInputsInterface, MergeBehavior, Tool, ToolBase
|
32
34
|
from vellum.workflows.types.definition import ComposioToolDefinition, DeploymentDefinition, MCPServer, MCPToolDefinition
|
33
35
|
from vellum.workflows.types.generics import is_workflow_class
|
34
36
|
|
@@ -59,6 +61,9 @@ class FunctionCallNodeMixin:
|
|
59
61
|
content=StringChatMessageContent(value=json.dumps(result, cls=DefaultStateEncoder)),
|
60
62
|
)
|
61
63
|
)
|
64
|
+
with state.__quiet__():
|
65
|
+
state.current_function_calls_processed += 1
|
66
|
+
state.current_prompt_output_index += 1
|
62
67
|
|
63
68
|
|
64
69
|
class ToolRouterNode(InlinePromptNode[ToolCallingState]):
|
@@ -73,29 +78,37 @@ class ToolRouterNode(InlinePromptNode[ToolCallingState]):
|
|
73
78
|
raise NodeException(message=max_iterations_message, code=WorkflowErrorCode.NODE_EXECUTION)
|
74
79
|
|
75
80
|
generator = super().run()
|
81
|
+
with self.state.__quiet__():
|
82
|
+
self.state.current_prompt_output_index = 0
|
83
|
+
self.state.current_function_calls_processed = 0
|
84
|
+
self.state.prompt_iterations += 1
|
76
85
|
for output in generator:
|
77
|
-
if output.name ==
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
content=FunctionCallChatMessageContent(
|
91
|
-
value=FunctionCallChatMessageContentValue(
|
92
|
-
name=function_call.name,
|
93
|
-
arguments=function_call.arguments,
|
94
|
-
id=function_call.id,
|
95
|
-
),
|
96
|
-
),
|
97
|
-
)
|
86
|
+
if output.name == InlinePromptNode.Outputs.results.name and output.value:
|
87
|
+
prompt_outputs = cast(List[PromptOutput], output.value)
|
88
|
+
chat_contents: List[ArrayChatMessageContentItem] = []
|
89
|
+
for prompt_output in prompt_outputs:
|
90
|
+
if prompt_output.type == "STRING":
|
91
|
+
chat_contents.append(StringChatMessageContent(value=prompt_output.value))
|
92
|
+
elif prompt_output.type == "FUNCTION_CALL" and prompt_output.value:
|
93
|
+
raw_function_call = prompt_output.value.model_dump()
|
94
|
+
if "state" in raw_function_call:
|
95
|
+
del raw_function_call["state"]
|
96
|
+
chat_contents.append(
|
97
|
+
FunctionCallChatMessageContent(
|
98
|
+
value=FunctionCallChatMessageContentValue.model_validate(raw_function_call)
|
98
99
|
)
|
100
|
+
)
|
101
|
+
|
102
|
+
if len(chat_contents) == 1:
|
103
|
+
if chat_contents[0].type == "STRING":
|
104
|
+
self.state.chat_history.append(ChatMessage(role="ASSISTANT", text=chat_contents[0].value))
|
105
|
+
else:
|
106
|
+
self.state.chat_history.append(ChatMessage(role="ASSISTANT", content=chat_contents[0]))
|
107
|
+
else:
|
108
|
+
self.state.chat_history.append(
|
109
|
+
ChatMessage(role="ASSISTANT", content=ArrayChatMessageContent(value=chat_contents))
|
110
|
+
)
|
111
|
+
|
99
112
|
yield output
|
100
113
|
|
101
114
|
|
@@ -184,7 +197,12 @@ class ComposioNode(BaseNode[ToolCallingState], FunctionCallNodeMixin):
|
|
184
197
|
try:
|
185
198
|
# Execute using ComposioService
|
186
199
|
composio_service = ComposioService()
|
187
|
-
|
200
|
+
if self.composio_tool.user_id is not None:
|
201
|
+
result = composio_service.execute_tool(
|
202
|
+
tool_name=self.composio_tool.action, arguments=arguments, user_id=self.composio_tool.user_id
|
203
|
+
)
|
204
|
+
else:
|
205
|
+
result = composio_service.execute_tool(tool_name=self.composio_tool.action, arguments=arguments)
|
188
206
|
except Exception as e:
|
189
207
|
raise NodeException(
|
190
208
|
message=f"Error executing Composio tool '{self.composio_tool.action}': {str(e)}",
|
@@ -220,41 +238,51 @@ class MCPNode(BaseNode[ToolCallingState], FunctionCallNodeMixin):
|
|
220
238
|
yield from []
|
221
239
|
|
222
240
|
|
223
|
-
|
241
|
+
class ElseNode(BaseNode[ToolCallingState]):
|
242
|
+
"""Node that executes when no function conditions match."""
|
243
|
+
|
244
|
+
class Ports(BaseNode.Ports):
|
245
|
+
# Redefined in the create_else_node function, but defined here to resolve mypy errors
|
246
|
+
loop = Port.on_if(
|
247
|
+
ToolCallingState.current_prompt_output_index.less_than(1)
|
248
|
+
| ToolCallingState.current_function_calls_processed.greater_than(0)
|
249
|
+
)
|
250
|
+
end = Port.on_else()
|
251
|
+
|
252
|
+
def run(self) -> BaseNode.Outputs:
|
253
|
+
with self.state.__quiet__():
|
254
|
+
self.state.current_prompt_output_index += 1
|
255
|
+
return self.Outputs()
|
256
|
+
|
257
|
+
|
258
|
+
def _hydrate_composio_tool_definition(tool_def: ComposioToolDefinition) -> FunctionDefinition:
|
224
259
|
"""Hydrate a ComposioToolDefinition with detailed information from the Composio API.
|
225
260
|
|
226
261
|
Args:
|
227
262
|
tool_def: The basic ComposioToolDefinition to enhance
|
228
263
|
|
229
264
|
Returns:
|
230
|
-
|
265
|
+
FunctionDefinition with detailed parameters and description
|
231
266
|
"""
|
232
267
|
try:
|
233
268
|
composio_service = ComposioService()
|
234
269
|
tool_details = composio_service.get_tool_by_slug(tool_def.action)
|
235
270
|
|
236
|
-
#
|
237
|
-
|
238
|
-
|
239
|
-
toolkit_info.get("slug", tool_def.toolkit) if isinstance(toolkit_info, dict) else tool_def.toolkit
|
240
|
-
)
|
241
|
-
|
242
|
-
# Create a version of the tool definition with proper field extraction
|
243
|
-
return ComposioToolDefinition(
|
244
|
-
type=tool_def.type,
|
245
|
-
toolkit=toolkit_slug.upper() if toolkit_slug else tool_def.toolkit,
|
246
|
-
action=tool_details.get("slug", tool_def.action),
|
271
|
+
# Create a FunctionDefinition directly with proper field extraction
|
272
|
+
return FunctionDefinition(
|
273
|
+
name=tool_def.name,
|
247
274
|
description=tool_details.get("description", tool_def.description),
|
248
|
-
|
249
|
-
parameters=tool_details.get("input_parameters", tool_def.parameters),
|
250
|
-
version=tool_details.get("version", tool_def.version),
|
251
|
-
tags=tool_details.get("tags", tool_def.tags),
|
275
|
+
parameters=tool_details.get("input_parameters", {}),
|
252
276
|
)
|
253
277
|
|
254
278
|
except Exception as e:
|
255
|
-
# If hydration fails (including no API key), log and return
|
279
|
+
# If hydration fails (including no API key), log and return basic function definition
|
256
280
|
logger.warning(f"Failed to enhance Composio tool '{tool_def.action}': {e}")
|
257
|
-
return
|
281
|
+
return FunctionDefinition(
|
282
|
+
name=tool_def.name,
|
283
|
+
description=tool_def.description,
|
284
|
+
parameters={},
|
285
|
+
)
|
258
286
|
|
259
287
|
|
260
288
|
def hydrate_mcp_tool_definitions(server_def: MCPServer) -> List[MCPToolDefinition]:
|
@@ -281,12 +309,11 @@ def create_tool_router_node(
|
|
281
309
|
ml_model: str,
|
282
310
|
blocks: List[Union[PromptBlock, Dict[str, Any]]],
|
283
311
|
functions: List[Tool],
|
284
|
-
tool_sources: List[ToolSource],
|
285
312
|
prompt_inputs: Optional[EntityInputsInterface],
|
286
313
|
parameters: PromptParameters,
|
287
314
|
max_prompt_iterations: Optional[int] = None,
|
288
315
|
) -> Type[ToolRouterNode]:
|
289
|
-
if functions and len(functions) > 0
|
316
|
+
if functions and len(functions) > 0:
|
290
317
|
# Create dynamic ports and convert functions in a single loop
|
291
318
|
Ports = type("Ports", (), {})
|
292
319
|
prompt_functions: List[Union[Tool, FunctionDefinition]] = []
|
@@ -298,8 +325,13 @@ def create_tool_router_node(
|
|
298
325
|
return Port.on_if(
|
299
326
|
LazyReference(
|
300
327
|
lambda: (
|
301
|
-
node.Outputs.results
|
302
|
-
& node.Outputs.results[
|
328
|
+
ToolCallingState.current_prompt_output_index.less_than(node.Outputs.results.length())
|
329
|
+
& node.Outputs.results[ToolCallingState.current_prompt_output_index]["type"].equals(
|
330
|
+
"FUNCTION_CALL"
|
331
|
+
)
|
332
|
+
& node.Outputs.results[ToolCallingState.current_prompt_output_index]["value"]["name"].equals(
|
333
|
+
fn_name
|
334
|
+
)
|
303
335
|
)
|
304
336
|
)
|
305
337
|
)
|
@@ -308,34 +340,29 @@ def create_tool_router_node(
|
|
308
340
|
if isinstance(function, ComposioToolDefinition):
|
309
341
|
# Get Composio tool details and hydrate the function definition
|
310
342
|
enhanced_function = _hydrate_composio_tool_definition(function)
|
311
|
-
prompt_functions.append(
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
343
|
+
prompt_functions.append(enhanced_function)
|
344
|
+
# Create port for this function (using original function for get_function_name)
|
345
|
+
function_name = get_function_name(function)
|
346
|
+
port = create_port_condition(function_name)
|
347
|
+
setattr(Ports, function_name, port)
|
348
|
+
elif isinstance(function, MCPServer):
|
349
|
+
tool_functions: List[MCPToolDefinition] = hydrate_mcp_tool_definitions(function)
|
350
|
+
for tool_function in tool_functions:
|
351
|
+
name = get_mcp_tool_name(tool_function)
|
352
|
+
prompt_functions.append(
|
353
|
+
FunctionDefinition(
|
354
|
+
name=name,
|
355
|
+
description=tool_function.description,
|
356
|
+
parameters=tool_function.parameters,
|
357
|
+
)
|
316
358
|
)
|
317
|
-
|
359
|
+
port = create_port_condition(name)
|
360
|
+
setattr(Ports, name, port)
|
318
361
|
else:
|
319
362
|
prompt_functions.append(function)
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
port = create_port_condition(function_name)
|
324
|
-
setattr(Ports, function_name, port)
|
325
|
-
|
326
|
-
for server in tool_sources:
|
327
|
-
tool_functions = hydrate_mcp_tool_definitions(server)
|
328
|
-
for tool_function in tool_functions:
|
329
|
-
name = get_function_name(tool_function)
|
330
|
-
prompt_functions.append(
|
331
|
-
FunctionDefinition(
|
332
|
-
name=name,
|
333
|
-
description=tool_function.description,
|
334
|
-
parameters=tool_function.parameters,
|
335
|
-
)
|
336
|
-
)
|
337
|
-
port = create_port_condition(name)
|
338
|
-
setattr(Ports, name, port)
|
363
|
+
function_name = get_function_name(function)
|
364
|
+
port = create_port_condition(function_name)
|
365
|
+
setattr(Ports, function_name, port)
|
339
366
|
|
340
367
|
# Add the else port for when no function conditions match
|
341
368
|
setattr(Ports, "default", Port.on_else())
|
@@ -397,7 +424,7 @@ def create_tool_router_node(
|
|
397
424
|
|
398
425
|
|
399
426
|
def create_function_node(
|
400
|
-
function:
|
427
|
+
function: ToolBase,
|
401
428
|
tool_router_node: Type[ToolRouterNode],
|
402
429
|
) -> Type[BaseNode]:
|
403
430
|
"""
|
@@ -438,17 +465,6 @@ def create_function_node(
|
|
438
465
|
},
|
439
466
|
)
|
440
467
|
return node
|
441
|
-
elif isinstance(function, MCPToolDefinition):
|
442
|
-
node = type(
|
443
|
-
f"MCPNode_{function.name}",
|
444
|
-
(MCPNode,),
|
445
|
-
{
|
446
|
-
"mcp_tool": function,
|
447
|
-
"function_call_output": tool_router_node.Outputs.results,
|
448
|
-
"__module__": __name__,
|
449
|
-
},
|
450
|
-
)
|
451
|
-
return node
|
452
468
|
elif is_workflow_class(function):
|
453
469
|
node = type(
|
454
470
|
f"DynamicInlineSubworkflowNode_{function.__name__}",
|
@@ -474,13 +490,52 @@ def create_function_node(
|
|
474
490
|
return node
|
475
491
|
|
476
492
|
|
477
|
-
def
|
493
|
+
def create_mcp_tool_node(
|
494
|
+
tool_def: MCPToolDefinition,
|
495
|
+
tool_router_node: Type[ToolRouterNode],
|
496
|
+
) -> Type[BaseNode]:
|
497
|
+
node = type(
|
498
|
+
f"MCPNode_{tool_def.name}",
|
499
|
+
(MCPNode,),
|
500
|
+
{
|
501
|
+
"mcp_tool": tool_def,
|
502
|
+
"function_call_output": tool_router_node.Outputs.results,
|
503
|
+
"__module__": __name__,
|
504
|
+
},
|
505
|
+
)
|
506
|
+
return node
|
507
|
+
|
508
|
+
|
509
|
+
def create_else_node(
|
510
|
+
tool_router_node: Type[ToolRouterNode],
|
511
|
+
) -> Type[ElseNode]:
|
512
|
+
class Ports(ElseNode.Ports):
|
513
|
+
loop = Port.on_if(
|
514
|
+
ToolCallingState.current_prompt_output_index.less_than(tool_router_node.Outputs.results.length())
|
515
|
+
| ToolCallingState.current_function_calls_processed.greater_than(0)
|
516
|
+
)
|
517
|
+
end = Port.on_else()
|
518
|
+
|
519
|
+
node = type(
|
520
|
+
f"{tool_router_node.__name__}_ElseNode",
|
521
|
+
(ElseNode,),
|
522
|
+
{
|
523
|
+
"Ports": Ports,
|
524
|
+
"__module__": __name__,
|
525
|
+
},
|
526
|
+
)
|
527
|
+
return node
|
528
|
+
|
529
|
+
|
530
|
+
def get_function_name(function: ToolBase) -> str:
|
478
531
|
if isinstance(function, DeploymentDefinition):
|
479
532
|
name = str(function.deployment_id or function.deployment_name)
|
480
533
|
return name.replace("-", "")
|
481
534
|
elif isinstance(function, ComposioToolDefinition):
|
482
535
|
return function.name
|
483
|
-
elif isinstance(function, MCPToolDefinition):
|
484
|
-
return f"{function.server.name}__{function.name}"
|
485
536
|
else:
|
486
537
|
return snake_case(function.__name__)
|
538
|
+
|
539
|
+
|
540
|
+
def get_mcp_tool_name(tool_def: MCPToolDefinition) -> str:
|
541
|
+
return f"{tool_def.server.name}__{tool_def.name}"
|
vellum/workflows/types/core.py
CHANGED
@@ -13,7 +13,7 @@ from typing import ( # type: ignore[attr-defined]
|
|
13
13
|
)
|
14
14
|
|
15
15
|
from vellum.client.core.pydantic_utilities import UniversalBaseModel
|
16
|
-
from vellum.workflows.types.definition import ComposioToolDefinition, DeploymentDefinition, MCPServer
|
16
|
+
from vellum.workflows.types.definition import ComposioToolDefinition, DeploymentDefinition, MCPServer
|
17
17
|
|
18
18
|
if TYPE_CHECKING:
|
19
19
|
from vellum.workflows.workflows.base import BaseWorkflow
|
@@ -51,7 +51,5 @@ class ConditionType(Enum):
|
|
51
51
|
|
52
52
|
|
53
53
|
# Type alias for functions that can be called in tool calling nodes
|
54
|
-
|
55
|
-
|
56
|
-
# Type alias for sources that provide tools to tool calling nodes
|
57
|
-
ToolSource = Union[MCPServer]
|
54
|
+
ToolBase = Union[Callable[..., Any], DeploymentDefinition, Type["BaseWorkflow"], ComposioToolDefinition]
|
55
|
+
Tool = Union[ToolBase, MCPServer]
|
@@ -2,7 +2,7 @@ import importlib
|
|
2
2
|
import inspect
|
3
3
|
from types import FrameType
|
4
4
|
from uuid import UUID
|
5
|
-
from typing import Annotated, Any, Dict,
|
5
|
+
from typing import Annotated, Any, Dict, Literal, Optional, Union
|
6
6
|
|
7
7
|
from pydantic import BeforeValidator
|
8
8
|
|
@@ -111,11 +111,7 @@ class ComposioToolDefinition(UniversalBaseModel):
|
|
111
111
|
toolkit: str # "GITHUB", "SLACK", etc.
|
112
112
|
action: str # Specific action like "GITHUB_CREATE_AN_ISSUE"
|
113
113
|
description: str
|
114
|
-
|
115
|
-
display_name: Optional[str] = None
|
116
|
-
parameters: Optional[Dict[str, Any]] = None
|
117
|
-
version: Optional[str] = None
|
118
|
-
tags: Optional[List[str]] = None
|
114
|
+
user_id: Optional[str] = None
|
119
115
|
|
120
116
|
@property
|
121
117
|
def name(self) -> str:
|
@@ -39,13 +39,16 @@ def test_deployment_definition(deployment_value, expected_deployment_id, expecte
|
|
39
39
|
def test_composio_tool_definition_creation():
|
40
40
|
"""Test that ComposioToolDefinition can be created with required fields."""
|
41
41
|
composio_tool = ComposioToolDefinition(
|
42
|
-
toolkit="GITHUB",
|
42
|
+
toolkit="GITHUB",
|
43
|
+
action="GITHUB_CREATE_AN_ISSUE",
|
44
|
+
description="Create a new issue in a GitHub repository",
|
45
|
+
user_id=None,
|
43
46
|
)
|
44
47
|
|
45
48
|
assert composio_tool.toolkit == "GITHUB"
|
46
49
|
assert composio_tool.action == "GITHUB_CREATE_AN_ISSUE"
|
47
50
|
assert composio_tool.description == "Create a new issue in a GitHub repository"
|
48
|
-
assert composio_tool.
|
51
|
+
assert composio_tool.user_id is None
|
49
52
|
assert composio_tool.name == "github_create_an_issue"
|
50
53
|
|
51
54
|
|
@@ -94,9 +94,9 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_
|
|
94
94
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py,sha256=XWrhHg_acLsRHwjstBAii9Pmes9oXFtAUWSAVF1oSBc,11225
|
95
95
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py,sha256=V8b6gKghLlO7PJI8xeNdnfn8aII0W_IFQvSQBQM62UQ,7721
|
96
96
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py,sha256=hDWtKXmGI1CKhTwTNqpu_d5RkE5n7SolMLtgd87KqTI,3856
|
97
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_composio_serialization.py,sha256=
|
98
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_serialization.py,sha256=
|
99
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_serialization.py,sha256=
|
97
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_composio_serialization.py,sha256=AUfULtIangNYkvLH3jd2Ar8X5ulW4tGmezeCfMmXFUU,3697
|
98
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_serialization.py,sha256=4t1lkN2nsZF6lFqP6QnskUQWJlhasF8C2_f6atzk8ZY,26298
|
99
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_serialization.py,sha256=B0rDsCvO24qPp0gkmj8SdTDY5CxZYkvKwknsKBuAPyA,10017
|
100
100
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_workflow_deployment_serialization.py,sha256=mova0sPD3evHiHIN1O0VynxlCp-uOcEIKve5Pd_oCDg,4069
|
101
101
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=pLCyMScV88DTBXRH7jXaXOEA1GBq8NIipCUFwIAWnwI,2771
|
102
102
|
vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=J4ouI8KxbMfxQP2Zq_9cWMGYgbjCWmKzjCJEtnSJb0I,5829
|
@@ -105,7 +105,7 @@ vellum_ee/workflows/display/types.py,sha256=i4T7ElU5b5h-nA1i3scmEhO1BqmNDc4eJDHa
|
|
105
105
|
vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
106
106
|
vellum_ee/workflows/display/utils/auto_layout.py,sha256=f4GiLn_LazweupfqTpubcdtdfE_vrOcmZudSsnYIY9E,3906
|
107
107
|
vellum_ee/workflows/display/utils/exceptions.py,sha256=LSwwxCYNxFkf5XMUcFkaZKpQ13OSrI7y_bpEUwbKVk0,169
|
108
|
-
vellum_ee/workflows/display/utils/expressions.py,sha256=
|
108
|
+
vellum_ee/workflows/display/utils/expressions.py,sha256=YZjd6wrOkmmnTe5LstKaVaBqmR8Q8XS81QzSFwkLtN0,16324
|
109
109
|
vellum_ee/workflows/display/utils/registry.py,sha256=fWIm5Jj-10gNFjgn34iBu4RWv3Vd15ijtSN0V97bpW8,1513
|
110
110
|
vellum_ee/workflows/display/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
111
111
|
vellum_ee/workflows/display/utils/tests/test_auto_layout.py,sha256=vfXI769418s9vda5Gb5NFBH747WMOwSgHRXeLCTLVm8,2356
|
@@ -145,7 +145,7 @@ vellum/client/README.md,sha256=Dle5iytCXxP1pNeNd7uZyhFo0rl7tp7vU7s8gmi10OQ,4863
|
|
145
145
|
vellum/client/__init__.py,sha256=KmkyOgReuTsjmXF3WC_dPQ9QqJgYrB3Sr8_LcSUIQyI,125258
|
146
146
|
vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
|
147
147
|
vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
|
148
|
-
vellum/client/core/client_wrapper.py,sha256=
|
148
|
+
vellum/client/core/client_wrapper.py,sha256=GLUu-tM9O4VyvaRt1Uz-BgKMqUFNR3H4hdD14V7NGqM,2385
|
149
149
|
vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
150
150
|
vellum/client/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
|
151
151
|
vellum/client/core/http_client.py,sha256=cKs2w0ybDBk1wHQf-fTALm_MmvaMe3cZKcYJxqmCxkE,19539
|
@@ -1530,14 +1530,15 @@ vellum/workflows/__init__.py,sha256=CssPsbNvN6rDhoLuqpEv7MMKGa51vE6dvAh6U31Pcio,
|
|
1530
1530
|
vellum/workflows/constants.py,sha256=2yg4_uo5gpqViy3ZLSwfC8qTybleYCtOnhA4Rj6bacM,1310
|
1531
1531
|
vellum/workflows/context.py,sha256=jvMuyeRluay8BQa7GX1TqUlmoHLCycAVYKkp87sfXSo,1644
|
1532
1532
|
vellum/workflows/descriptors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1533
|
-
vellum/workflows/descriptors/base.py,sha256=
|
1533
|
+
vellum/workflows/descriptors/base.py,sha256=fRnRkECyDjfz2QEDCY9Q5mAerlJ6jR0R4nE-MP2VP_k,16558
|
1534
1534
|
vellum/workflows/descriptors/exceptions.py,sha256=gUy4UD9JFUKSeQnQpeuDSLiRqWjWiIsxLahB7p_q3JY,54
|
1535
1535
|
vellum/workflows/descriptors/tests/test_utils.py,sha256=HJ5DoRz0sJvViGxyZ_FtytZjxN2J8xTkGtaVwCy6Q90,6928
|
1536
|
-
vellum/workflows/descriptors/utils.py,sha256=
|
1536
|
+
vellum/workflows/descriptors/utils.py,sha256=7QvS_IOZWIoKvhNwpYBOTP3NasLSIBKTnhyASry2HCM,4320
|
1537
1537
|
vellum/workflows/edges/__init__.py,sha256=wSkmAnz9xyi4vZwtDbKxwlplt2skD7n3NsxkvR_pUus,50
|
1538
1538
|
vellum/workflows/edges/edge.py,sha256=N0SnY3gKVuxImPAdCbPMPlHJIXbkQ3fwq_LbJRvVMFc,677
|
1539
|
-
vellum/workflows/emitters/__init__.py,sha256=
|
1540
|
-
vellum/workflows/emitters/base.py,sha256=
|
1539
|
+
vellum/workflows/emitters/__init__.py,sha256=d9QFOI3eVg6rzpSFLvrjkDYXWikf1tcp3ruTRa2Boyc,143
|
1540
|
+
vellum/workflows/emitters/base.py,sha256=Tcp13VMB-GMwEJdl-6XTPckspdOdwpMgBx22-PcQxds,892
|
1541
|
+
vellum/workflows/emitters/vellum_emitter.py,sha256=VRJgyEs6RnikwlPBUu1s7BD8flVeuM3QgTeQLUnaDuE,5051
|
1541
1542
|
vellum/workflows/environment/__init__.py,sha256=TJz0m9dwIs6YOwCTeuN0HHsU-ecyjc1OJXx4AFy83EQ,121
|
1542
1543
|
vellum/workflows/environment/environment.py,sha256=Ck3RPKXJvtMGx_toqYQQQF-ZwXm5ijVwJpEPTeIJ4_Q,471
|
1543
1544
|
vellum/workflows/errors/__init__.py,sha256=tWGPu5xyAU8gRb8_bl0fL7OfU3wxQ9UH6qVwy4X4P_Q,113
|
@@ -1552,7 +1553,8 @@ vellum/workflows/events/types.py,sha256=jc6vEcydzYETfK3u2Cx1BfUDmYh3Jxa86sdsrrQ5
|
|
1552
1553
|
vellum/workflows/events/workflow.py,sha256=cR2aG6A-JqvLMKFqonDhKjSg496qldEtuks4BXXMTrY,7768
|
1553
1554
|
vellum/workflows/exceptions.py,sha256=NiBiR3ggfmPxBVqD-H1SqmjI-7mIn0EStSN1BqApvCM,1213
|
1554
1555
|
vellum/workflows/expressions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1555
|
-
vellum/workflows/expressions/accessor.py,sha256=
|
1556
|
+
vellum/workflows/expressions/accessor.py,sha256=3lu1-_-dBfZdJvtX-q66jbmRAZtqIfdsh_3_JNuzg1E,4462
|
1557
|
+
vellum/workflows/expressions/add.py,sha256=Rr1O83nksL5Z0kam4eaQOokvDrEwlUg7LqWnXzGUW40,1226
|
1556
1558
|
vellum/workflows/expressions/and_.py,sha256=I7lNqrUM3-m_5hmjjiMhaHhJtKcLj39kEFVWPDOqwfo,916
|
1557
1559
|
vellum/workflows/expressions/begins_with.py,sha256=FnWsQXbENm0ZwkfEP7dR8Qx4_MMrzj6C1yqAV2KaNHw,1123
|
1558
1560
|
vellum/workflows/expressions/between.py,sha256=dVeddT6YA91eOAlE1Utg7C7gnCiYE7WP-dg17yXUeAY,1492
|
@@ -1577,16 +1579,21 @@ vellum/workflows/expressions/is_not_null.py,sha256=EoHXFgZScKP_BM2a5Z7YFQN6l7RME
|
|
1577
1579
|
vellum/workflows/expressions/is_not_undefined.py,sha256=9s-RUQBqM17-_nIRvwsHuarLdHVtrxVuwnqBNJEtmh0,735
|
1578
1580
|
vellum/workflows/expressions/is_null.py,sha256=C75ALGlG_sTGcxI46tm9HtgPVfJ7DwTIyKzX8qtEiDU,660
|
1579
1581
|
vellum/workflows/expressions/is_undefined.py,sha256=uUBK3rxYbwoeRq36AGFc7d61hXzTp8UacQAi-1JbaW0,724
|
1582
|
+
vellum/workflows/expressions/length.py,sha256=Gq4eBXnLLmuyhKHwERcvBd4qLHLkw_JebpZ778gw08M,1274
|
1580
1583
|
vellum/workflows/expressions/less_than.py,sha256=chY9puJ6jDB2EinjfyGNrSplJ1NJC-BB-GGSSB33bqI,1237
|
1581
1584
|
vellum/workflows/expressions/less_than_or_equal_to.py,sha256=JtTDBa8yFKy3fGaCOA1tb_5s1JkY8FFnH6kpoeXGnT4,1267
|
1585
|
+
vellum/workflows/expressions/minus.py,sha256=qTIuOF3knMwwGiA9BNGvMP6vVw3z0g5wr4LziaYMRIE,1232
|
1582
1586
|
vellum/workflows/expressions/not_between.py,sha256=ZtRJeJDSSlOvajL8YoBoh5o_khjIn9xSSeQCnXYbHFE,1506
|
1583
1587
|
vellum/workflows/expressions/not_in.py,sha256=pFvwkFPsn3WJw61ssFgM2U1dqWEeglfz4FVT4xwm5Mc,1144
|
1584
1588
|
vellum/workflows/expressions/or_.py,sha256=s-8YdMSSCDS2yijR38kguwok3iqmDMMgDYKV93b4O4s,914
|
1585
1589
|
vellum/workflows/expressions/parse_json.py,sha256=xsk6j3HF7bU1yF6fwt5P9Ugcyd5D9ZXrdng11FRilUI,1088
|
1586
1590
|
vellum/workflows/expressions/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1587
1591
|
vellum/workflows/expressions/tests/test_accessor.py,sha256=g2z0mJjuWwVKeXS0yGoFW-aRmT5n_LrhfuBorSmj9kI,7585
|
1592
|
+
vellum/workflows/expressions/tests/test_add.py,sha256=_MjlRvIGAVM5wve2ru5jc_5Ae4x_ywvh4vN0S2yQ-8M,1615
|
1588
1593
|
vellum/workflows/expressions/tests/test_concat.py,sha256=fDHXlmFvCtqPkdZQD9Qs22i6sJq_MJjbUXCnTlSMvA0,1666
|
1589
1594
|
vellum/workflows/expressions/tests/test_expressions.py,sha256=3b6k8xs-CItBBw95NygFLUNoNPKxI4VA1GyWbkMtqyI,11623
|
1595
|
+
vellum/workflows/expressions/tests/test_length.py,sha256=pQA1tYSwqxE6euclboY024NXEOs7yaVgwTKkMPYUT08,1035
|
1596
|
+
vellum/workflows/expressions/tests/test_minus.py,sha256=pq7dvdRGNhSSn95LGNzRErsYUsFk5SpOKHDcSR5QToc,1632
|
1590
1597
|
vellum/workflows/expressions/tests/test_parse_json.py,sha256=zpB_qE5_EwWQL7ULQUJm0o1PRSfWZdAqZNW6Ah13oJE,1059
|
1591
1598
|
vellum/workflows/graph/__init__.py,sha256=3sHlay5d_-uD7j3QJXiGl0WHFZZ_QScRvgyDhN2GhHY,74
|
1592
1599
|
vellum/workflows/graph/graph.py,sha256=GGR8cGpSuNWPIiTWNWsj6l70upb5nIxAyFcn7VdaJIs,5506
|
@@ -1597,7 +1604,7 @@ vellum/workflows/inputs/base.py,sha256=w3owT5B3rLBmIj-v-jL2l-HD4yd3hXK9RmHVd557B
|
|
1597
1604
|
vellum/workflows/inputs/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1598
1605
|
vellum/workflows/inputs/tests/test_inputs.py,sha256=lioA8917mFLYq7Ml69UNkqUjcWbbxkxnpIEJ4FBaYBk,2206
|
1599
1606
|
vellum/workflows/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1600
|
-
vellum/workflows/integrations/composio_service.py,sha256=
|
1607
|
+
vellum/workflows/integrations/composio_service.py,sha256=rSliaZtNiBcDSvDxz9k5i1KkyUIrbxyegu0yU9cDByU,6023
|
1601
1608
|
vellum/workflows/integrations/mcp_service.py,sha256=SaOLg76JBAiBDAMUn04mxVWmf2Btobd1kDjc8B1atng,8712
|
1602
1609
|
vellum/workflows/logging.py,sha256=_a217XogktV4Ncz6xKFz7WfYmZAzkfVRVuC0rWob8ls,437
|
1603
1610
|
vellum/workflows/nodes/__init__.py,sha256=aVdQVv7Y3Ro3JlqXGpxwaU2zrI06plDHD2aumH5WUIs,1157
|
@@ -1640,7 +1647,7 @@ vellum/workflows/nodes/displayable/bases/api_node/node.py,sha256=iUtdPsbJs1jwo3V
|
|
1640
1647
|
vellum/workflows/nodes/displayable/bases/api_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1641
1648
|
vellum/workflows/nodes/displayable/bases/api_node/tests/test_node.py,sha256=Pf51DIyhtUxx-pCu0zJYDB4Z5_IW5mRwkJIoPT53_9I,3894
|
1642
1649
|
vellum/workflows/nodes/displayable/bases/base_prompt_node/__init__.py,sha256=Org3xTvgp1pA0uUXFfnJr29D3HzCey2lEdYF4zbIUgo,70
|
1643
|
-
vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=
|
1650
|
+
vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=ea20icDM1HB942wkH-XtXNSNCBDcjeOiN3vowkHL4fs,4477
|
1644
1651
|
vellum/workflows/nodes/displayable/bases/inline_prompt_node/__init__.py,sha256=Hl35IAoepRpE-j4cALaXVJIYTYOF3qszyVbxTj4kS1s,82
|
1645
1652
|
vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=hy_fy4zImhpnHuPczKtOLhv_uOmvxvJsQA9Zl9DTmSw,12851
|
1646
1653
|
vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1671,7 +1678,7 @@ vellum/workflows/nodes/displayable/guardrail_node/test_node.py,sha256=SAGv6hSFcB
|
|
1671
1678
|
vellum/workflows/nodes/displayable/guardrail_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1672
1679
|
vellum/workflows/nodes/displayable/guardrail_node/tests/test_node.py,sha256=X2pd6TI8miYxIa7rgvs1pHTEreyWcf77EyR0_Jsa700,2055
|
1673
1680
|
vellum/workflows/nodes/displayable/inline_prompt_node/__init__.py,sha256=gSUOoEZLlrx35-tQhSAd3An8WDwBqyiQh-sIebLU9wU,74
|
1674
|
-
vellum/workflows/nodes/displayable/inline_prompt_node/node.py,sha256=
|
1681
|
+
vellum/workflows/nodes/displayable/inline_prompt_node/node.py,sha256=3jY-2UJarVJSz2eupt7c9Mp-Mk56U2meXU0d7c0KVNk,2941
|
1675
1682
|
vellum/workflows/nodes/displayable/inline_prompt_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1676
1683
|
vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py,sha256=bBHs90mV5SZ3rJPAL0wx4WWyawUA406LgMPOdvpZC_A,10923
|
1677
1684
|
vellum/workflows/nodes/displayable/merge_node/__init__.py,sha256=J8IC08dSH7P76wKlNuxe1sn7toNGtSQdFirUbtPDEs0,60
|
@@ -1696,13 +1703,13 @@ vellum/workflows/nodes/displayable/tests/test_search_node_error_handling.py,sha2
|
|
1696
1703
|
vellum/workflows/nodes/displayable/tests/test_search_node_wth_text_output.py,sha256=VepO5z1277c1y5N6LLIC31nnWD1aak2m5oPFplfJHHs,6935
|
1697
1704
|
vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py,sha256=dc3EEn1sOICpr3GdS8eyeFtExaGwWWcw9eHSdkRhQJU,2584
|
1698
1705
|
vellum/workflows/nodes/displayable/tool_calling_node/__init__.py,sha256=3n0-ysmFKsr40CVxPthc0rfJgqVJeZuUEsCmYudLVRg,117
|
1699
|
-
vellum/workflows/nodes/displayable/tool_calling_node/node.py,sha256=
|
1700
|
-
vellum/workflows/nodes/displayable/tool_calling_node/state.py,sha256=
|
1706
|
+
vellum/workflows/nodes/displayable/tool_calling_node/node.py,sha256=RFoMIr4CVy50fjuXAFphwfW1oXeZo7s-JY4Bqvlphn0,7460
|
1707
|
+
vellum/workflows/nodes/displayable/tool_calling_node/state.py,sha256=CcBVb_YtwfSSka4ze678k6-qwmzMSfjfVP8_Y95feSo,302
|
1701
1708
|
vellum/workflows/nodes/displayable/tool_calling_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1702
|
-
vellum/workflows/nodes/displayable/tool_calling_node/tests/test_composio_service.py,sha256=
|
1703
|
-
vellum/workflows/nodes/displayable/tool_calling_node/tests/test_node.py,sha256=
|
1704
|
-
vellum/workflows/nodes/displayable/tool_calling_node/tests/test_utils.py,sha256=
|
1705
|
-
vellum/workflows/nodes/displayable/tool_calling_node/utils.py,sha256=
|
1709
|
+
vellum/workflows/nodes/displayable/tool_calling_node/tests/test_composio_service.py,sha256=in1fbEz5x1tx3uKv9YXdvOncsHucNL8Ro6Go7lBuuOQ,8962
|
1710
|
+
vellum/workflows/nodes/displayable/tool_calling_node/tests/test_node.py,sha256=1QwfUOS26pesN6Ckqfm-RVlOSyjuF945vKC20AXedKw,8458
|
1711
|
+
vellum/workflows/nodes/displayable/tool_calling_node/tests/test_utils.py,sha256=om4FztVQ33jFZK_lbusi6khOM7zgzNCHlUcEb5-r6pU,8361
|
1712
|
+
vellum/workflows/nodes/displayable/tool_calling_node/utils.py,sha256=7B_8FY5xEjra3A3k6kcABnrgobqieCKNCEA6ijKKaW8,21284
|
1706
1713
|
vellum/workflows/nodes/experimental/README.md,sha256=eF6DfIL8t-HbF9-mcofOMymKrraiBHDLKTlnBa51ZiE,284
|
1707
1714
|
vellum/workflows/nodes/experimental/__init__.py,sha256=jCQgvZEknXKfuNhGSOou4XPfrPqZ1_XBj5F0n0fgiWM,106
|
1708
1715
|
vellum/workflows/nodes/experimental/openai_chat_completion_node/__init__.py,sha256=lsyD9laR9p7kx5-BXGH2gUTM242UhKy8SMV0SR6S2iE,90
|
@@ -1749,12 +1756,12 @@ vellum/workflows/tests/test_sandbox.py,sha256=JKwaluI-lODQo7Ek9sjDstjL_WTdSqUlVi
|
|
1749
1756
|
vellum/workflows/tests/test_undefined.py,sha256=zMCVliCXVNLrlC6hEGyOWDnQADJ2g83yc5FIM33zuo8,353
|
1750
1757
|
vellum/workflows/types/__init__.py,sha256=KxUTMBGzuRCfiMqzzsykOeVvrrkaZmTTo1a7SLu8gRM,68
|
1751
1758
|
vellum/workflows/types/code_execution_node_wrappers.py,sha256=3MNIoFZKzVzNS5qFLVuDwMV17QJw72zo7NRf52yMq5A,3074
|
1752
|
-
vellum/workflows/types/core.py,sha256=
|
1753
|
-
vellum/workflows/types/definition.py,sha256=
|
1759
|
+
vellum/workflows/types/core.py,sha256=TggDVs2lVya33xvu374EDhMC1b7RRlAAs0zWLaF46BA,1385
|
1760
|
+
vellum/workflows/types/definition.py,sha256=ee55MvZs4scFgI7y3ykIcP_5kSTqb4ojNrtGmnvISTw,4437
|
1754
1761
|
vellum/workflows/types/generics.py,sha256=8jptbEx1fnJV0Lhj0MpCJOT6yNiEWeTOYOwrEAb5CRU,1576
|
1755
1762
|
vellum/workflows/types/stack.py,sha256=h7NE0vXR7l9DevFBIzIAk1Zh59K-kECQtDTKOUunwMY,1314
|
1756
1763
|
vellum/workflows/types/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1757
|
-
vellum/workflows/types/tests/test_definition.py,sha256=
|
1764
|
+
vellum/workflows/types/tests/test_definition.py,sha256=AM2uaADSWb6QUAP_CwjeSuNayBjoZ_yQWjYefw0mbGI,5045
|
1758
1765
|
vellum/workflows/types/tests/test_utils.py,sha256=UnZog59tR577mVwqZRqqWn2fScoOU1H6up0EzS8zYhw,2536
|
1759
1766
|
vellum/workflows/types/utils.py,sha256=mTctHITBybpt4855x32oCKALBEcMNLn-9cCmfEKgJHQ,6498
|
1760
1767
|
vellum/workflows/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1775,8 +1782,8 @@ vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnad
|
|
1775
1782
|
vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1776
1783
|
vellum/workflows/workflows/tests/test_base_workflow.py,sha256=ptMntHzVyy8ZuzNgeTuk7hREgKQ5UBdgq8VJFSGaW4Y,20832
|
1777
1784
|
vellum/workflows/workflows/tests/test_context.py,sha256=VJBUcyWVtMa_lE5KxdhgMu0WYNYnUQUDvTF7qm89hJ0,2333
|
1778
|
-
vellum_ai-1.0.
|
1779
|
-
vellum_ai-1.0.
|
1780
|
-
vellum_ai-1.0.
|
1781
|
-
vellum_ai-1.0.
|
1782
|
-
vellum_ai-1.0.
|
1785
|
+
vellum_ai-1.0.11.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
|
1786
|
+
vellum_ai-1.0.11.dist-info/METADATA,sha256=8M0wZ1WdaD1OxRcbUt8a0g6566qeU-QnXRHQ6heBKiU,5555
|
1787
|
+
vellum_ai-1.0.11.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
1788
|
+
vellum_ai-1.0.11.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
|
1789
|
+
vellum_ai-1.0.11.dist-info/RECORD,,
|
@@ -53,10 +53,7 @@ def test_serialize_workflow():
|
|
53
53
|
"toolkit": "GITHUB",
|
54
54
|
"action": "GITHUB_CREATE_AN_ISSUE",
|
55
55
|
"description": "Create a new issue in a GitHub repository",
|
56
|
-
"
|
57
|
-
"parameters": None,
|
58
|
-
"version": None,
|
59
|
-
"tags": None,
|
56
|
+
"user_id": None,
|
60
57
|
}
|
61
58
|
|
62
59
|
# AND the rest of the node structure should be correct
|
@@ -407,11 +407,6 @@ def test_serialize_workflow():
|
|
407
407
|
],
|
408
408
|
},
|
409
409
|
},
|
410
|
-
{
|
411
|
-
"id": "89084be2-0853-4483-9031-c24bdf872c32",
|
412
|
-
"name": "tool_sources",
|
413
|
-
"value": {"type": "CONSTANT_VALUE", "value": {"type": "JSON", "value": []}},
|
414
|
-
},
|
415
410
|
{
|
416
411
|
"id": "229cd1ca-dc2f-4586-b933-c4d4966f7bd1",
|
417
412
|
"name": "parameters",
|
@@ -175,11 +175,6 @@ def test_serialize_workflow():
|
|
175
175
|
],
|
176
176
|
},
|
177
177
|
},
|
178
|
-
{
|
179
|
-
"id": "89084be2-0853-4483-9031-c24bdf872c32",
|
180
|
-
"name": "tool_sources",
|
181
|
-
"value": {"type": "CONSTANT_VALUE", "value": {"type": "JSON", "value": []}},
|
182
|
-
},
|
183
178
|
{
|
184
179
|
"id": "229cd1ca-dc2f-4586-b933-c4d4966f7bd1",
|
185
180
|
"name": "parameters",
|