vellum-ai 1.5.6__py3-none-any.whl → 1.6.0__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 (30) hide show
  1. vellum/client/core/client_wrapper.py +2 -2
  2. vellum/client/types/composio_tool_definition.py +1 -0
  3. vellum/client/types/named_test_case_audio_variable_value.py +1 -1
  4. vellum/client/types/named_test_case_audio_variable_value_request.py +1 -1
  5. vellum/client/types/named_test_case_document_variable_value.py +1 -1
  6. vellum/client/types/named_test_case_document_variable_value_request.py +1 -1
  7. vellum/client/types/named_test_case_image_variable_value.py +1 -1
  8. vellum/client/types/named_test_case_image_variable_value_request.py +1 -1
  9. vellum/client/types/named_test_case_video_variable_value.py +1 -1
  10. vellum/client/types/named_test_case_video_variable_value_request.py +1 -1
  11. vellum/client/types/slim_composio_tool_definition.py +1 -0
  12. vellum/client/types/test_case_audio_variable_value.py +1 -1
  13. vellum/client/types/test_case_document_variable_value.py +1 -1
  14. vellum/client/types/test_case_image_variable_value.py +1 -1
  15. vellum/client/types/test_case_video_variable_value.py +1 -1
  16. vellum/workflows/errors/types.py +3 -0
  17. vellum/workflows/integrations/tests/test_vellum_integration_service.py +84 -0
  18. vellum/workflows/integrations/vellum_integration_service.py +34 -2
  19. vellum/workflows/nodes/displayable/tool_calling_node/utils.py +1 -1
  20. vellum/workflows/ports/port.py +4 -1
  21. vellum/workflows/ports/tests/test_port.py +45 -0
  22. vellum/workflows/types/definition.py +1 -1
  23. vellum/workflows/types/tests/test_definition.py +4 -4
  24. vellum/workflows/utils/functions.py +1 -1
  25. {vellum_ai-1.5.6.dist-info → vellum_ai-1.6.0.dist-info}/METADATA +1 -1
  26. {vellum_ai-1.5.6.dist-info → vellum_ai-1.6.0.dist-info}/RECORD +30 -29
  27. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_vellum_integration_serialization.py +1 -1
  28. {vellum_ai-1.5.6.dist-info → vellum_ai-1.6.0.dist-info}/LICENSE +0 -0
  29. {vellum_ai-1.5.6.dist-info → vellum_ai-1.6.0.dist-info}/WHEEL +0 -0
  30. {vellum_ai-1.5.6.dist-info → vellum_ai-1.6.0.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.5.6",
30
+ "User-Agent": "vellum-ai/1.6.0",
31
31
  "X-Fern-Language": "Python",
32
32
  "X-Fern-SDK-Name": "vellum-ai",
33
- "X-Fern-SDK-Version": "1.5.6",
33
+ "X-Fern-SDK-Version": "1.6.0",
34
34
  **(self.get_custom_headers() or {}),
35
35
  }
36
36
  if self._api_version is not None:
@@ -15,6 +15,7 @@ class ComposioToolDefinition(UniversalBaseModel):
15
15
  provider: typing.Literal["COMPOSIO"] = "COMPOSIO"
16
16
  integration: ToolDefinitionIntegration
17
17
  name: str
18
+ label: str
18
19
  description: str
19
20
  input_parameters: typing.Dict[str, typing.Optional[typing.Any]]
20
21
  output_parameters: typing.Dict[str, typing.Optional[typing.Any]]
@@ -13,7 +13,7 @@ class NamedTestCaseAudioVariableValue(UniversalBaseModel):
13
13
  """
14
14
 
15
15
  type: typing.Literal["AUDIO"] = "AUDIO"
16
- value: VellumAudio
16
+ value: typing.Optional[VellumAudio] = None
17
17
  name: str
18
18
 
19
19
  if IS_PYDANTIC_V2:
@@ -13,7 +13,7 @@ class NamedTestCaseAudioVariableValueRequest(UniversalBaseModel):
13
13
  """
14
14
 
15
15
  type: typing.Literal["AUDIO"] = "AUDIO"
16
- value: VellumAudioRequest
16
+ value: typing.Optional[VellumAudioRequest] = None
17
17
  name: str
18
18
 
19
19
  if IS_PYDANTIC_V2:
@@ -9,7 +9,7 @@ from .vellum_document import VellumDocument
9
9
 
10
10
  class NamedTestCaseDocumentVariableValue(UniversalBaseModel):
11
11
  type: typing.Literal["DOCUMENT"] = "DOCUMENT"
12
- value: VellumDocument
12
+ value: typing.Optional[VellumDocument] = None
13
13
  name: str
14
14
 
15
15
  if IS_PYDANTIC_V2:
@@ -9,7 +9,7 @@ from .vellum_document_request import VellumDocumentRequest
9
9
 
10
10
  class NamedTestCaseDocumentVariableValueRequest(UniversalBaseModel):
11
11
  type: typing.Literal["DOCUMENT"] = "DOCUMENT"
12
- value: VellumDocumentRequest
12
+ value: typing.Optional[VellumDocumentRequest] = None
13
13
  name: str
14
14
 
15
15
  if IS_PYDANTIC_V2:
@@ -9,7 +9,7 @@ from .vellum_image import VellumImage
9
9
 
10
10
  class NamedTestCaseImageVariableValue(UniversalBaseModel):
11
11
  type: typing.Literal["IMAGE"] = "IMAGE"
12
- value: VellumImage
12
+ value: typing.Optional[VellumImage] = None
13
13
  name: str
14
14
 
15
15
  if IS_PYDANTIC_V2:
@@ -9,7 +9,7 @@ from .vellum_image_request import VellumImageRequest
9
9
 
10
10
  class NamedTestCaseImageVariableValueRequest(UniversalBaseModel):
11
11
  type: typing.Literal["IMAGE"] = "IMAGE"
12
- value: VellumImageRequest
12
+ value: typing.Optional[VellumImageRequest] = None
13
13
  name: str
14
14
 
15
15
  if IS_PYDANTIC_V2:
@@ -9,7 +9,7 @@ from .vellum_video import VellumVideo
9
9
 
10
10
  class NamedTestCaseVideoVariableValue(UniversalBaseModel):
11
11
  type: typing.Literal["VIDEO"] = "VIDEO"
12
- value: VellumVideo
12
+ value: typing.Optional[VellumVideo] = None
13
13
  name: str
14
14
 
15
15
  if IS_PYDANTIC_V2:
@@ -9,7 +9,7 @@ from .vellum_video_request import VellumVideoRequest
9
9
 
10
10
  class NamedTestCaseVideoVariableValueRequest(UniversalBaseModel):
11
11
  type: typing.Literal["VIDEO"] = "VIDEO"
12
- value: VellumVideoRequest
12
+ value: typing.Optional[VellumVideoRequest] = None
13
13
  name: str
14
14
 
15
15
  if IS_PYDANTIC_V2:
@@ -11,6 +11,7 @@ class SlimComposioToolDefinition(UniversalBaseModel):
11
11
  provider: typing.Literal["COMPOSIO"] = "COMPOSIO"
12
12
  integration: ToolDefinitionIntegration
13
13
  name: str
14
+ label: str
14
15
  description: str
15
16
 
16
17
  if IS_PYDANTIC_V2:
@@ -15,7 +15,7 @@ class TestCaseAudioVariableValue(UniversalBaseModel):
15
15
  variable_id: str
16
16
  name: typing.Optional[str] = None
17
17
  type: typing.Literal["AUDIO"] = "AUDIO"
18
- value: VellumAudio
18
+ value: typing.Optional[VellumAudio] = None
19
19
 
20
20
  if IS_PYDANTIC_V2:
21
21
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
@@ -15,7 +15,7 @@ class TestCaseDocumentVariableValue(UniversalBaseModel):
15
15
  variable_id: str
16
16
  name: typing.Optional[str] = None
17
17
  type: typing.Literal["DOCUMENT"] = "DOCUMENT"
18
- value: VellumDocument
18
+ value: typing.Optional[VellumDocument] = None
19
19
 
20
20
  if IS_PYDANTIC_V2:
21
21
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
@@ -15,7 +15,7 @@ class TestCaseImageVariableValue(UniversalBaseModel):
15
15
  variable_id: str
16
16
  name: typing.Optional[str] = None
17
17
  type: typing.Literal["IMAGE"] = "IMAGE"
18
- value: VellumImage
18
+ value: typing.Optional[VellumImage] = None
19
19
 
20
20
  if IS_PYDANTIC_V2:
21
21
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
@@ -15,7 +15,7 @@ class TestCaseVideoVariableValue(UniversalBaseModel):
15
15
  variable_id: str
16
16
  name: typing.Optional[str] = None
17
17
  type: typing.Literal["VIDEO"] = "VIDEO"
18
- value: VellumVideo
18
+ value: typing.Optional[VellumVideo] = None
19
19
 
20
20
  if IS_PYDANTIC_V2:
21
21
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
@@ -21,6 +21,7 @@ class WorkflowErrorCode(Enum):
21
21
  INTERNAL_ERROR = "INTERNAL_ERROR"
22
22
  NODE_EXECUTION = "NODE_EXECUTION"
23
23
  PROVIDER_CREDENTIALS_UNAVAILABLE = "PROVIDER_CREDENTIALS_UNAVAILABLE"
24
+ INTEGRATION_CREDENTIALS_UNAVAILABLE = "INTEGRATION_CREDENTIALS_UNAVAILABLE"
24
25
  PROVIDER_ERROR = "PROVIDER_ERROR"
25
26
  USER_DEFINED_ERROR = "USER_DEFINED_ERROR"
26
27
  WORKFLOW_CANCELLED = "WORKFLOW_CANCELLED"
@@ -92,6 +93,8 @@ _WORKFLOW_ERROR_CODE_TO_VELLUM_ERROR_CODE: Dict[WorkflowErrorCode, VellumErrorCo
92
93
  WorkflowErrorCode.INTERNAL_ERROR: "INTERNAL_SERVER_ERROR",
93
94
  WorkflowErrorCode.NODE_EXECUTION: "USER_DEFINED_ERROR",
94
95
  WorkflowErrorCode.PROVIDER_ERROR: "PROVIDER_ERROR",
96
+ WorkflowErrorCode.PROVIDER_CREDENTIALS_UNAVAILABLE: "PROVIDER_CREDENTIALS_UNAVAILABLE",
97
+ WorkflowErrorCode.INTEGRATION_CREDENTIALS_UNAVAILABLE: "PROVIDER_CREDENTIALS_UNAVAILABLE",
95
98
  WorkflowErrorCode.USER_DEFINED_ERROR: "USER_DEFINED_ERROR",
96
99
  WorkflowErrorCode.WORKFLOW_CANCELLED: "REQUEST_TIMEOUT",
97
100
  }
@@ -19,6 +19,7 @@ def test_vellum_integration_service_get_tool_definition_success(vellum_client):
19
19
  provider="COMPOSIO",
20
20
  name="GITHUB",
21
21
  ),
22
+ label="GITHUB_CREATE_AN_ISSUE",
22
23
  name="GITHUB_CREATE_AN_ISSUE",
23
24
  description="Create a new issue in a GitHub repository",
24
25
  input_parameters={
@@ -211,3 +212,86 @@ def test_vellum_integration_service_multiple_tool_executions(vellum_client):
211
212
 
212
213
  # AND the API should have been called twice
213
214
  assert mock_client.integrations.execute_integration_tool.call_count == 2
215
+
216
+
217
+ def test_vellum_integration_service_execute_tool_structured_403_error(vellum_client):
218
+ """Test that structured 403 responses with integration details are properly parsed"""
219
+ from vellum.client.core.api_error import ApiError
220
+ from vellum.workflows.errors.types import WorkflowErrorCode
221
+
222
+ mock_client = vellum_client
223
+ mock_client.integrations = mock.MagicMock()
224
+
225
+ # Mock structured 403 response matching PR #14857 format
226
+ structured_error_body = {
227
+ "message": "You must authenticate with this integration before you can execute this tool.",
228
+ "integration": {
229
+ "id": "550e8400-e29b-41d4-a716-446655440000",
230
+ "provider": "COMPOSIO",
231
+ "name": "GITHUB",
232
+ },
233
+ }
234
+
235
+ mock_client.integrations.execute_integration_tool.side_effect = ApiError(
236
+ status_code=403,
237
+ body=structured_error_body,
238
+ )
239
+
240
+ service = VellumIntegrationService(client=mock_client)
241
+
242
+ # WHEN we attempt to execute a tool without credentials
243
+ with pytest.raises(NodeException) as exc_info:
244
+ service.execute_tool(
245
+ integration="GITHUB",
246
+ provider="COMPOSIO",
247
+ tool_name="GITHUB_CREATE_AN_ISSUE",
248
+ arguments={"repo": "user/repo"},
249
+ )
250
+
251
+ # THEN it should raise NodeException with INTEGRATION_CREDENTIALS_UNAVAILABLE code
252
+ assert exc_info.value.code == WorkflowErrorCode.INTEGRATION_CREDENTIALS_UNAVAILABLE
253
+
254
+ # AND the error message should match the backend response
255
+ assert "You must authenticate with this integration" in exc_info.value.message
256
+
257
+ # AND raw_data should contain integration details nested under "integration" key
258
+ assert exc_info.value.raw_data is not None
259
+ assert exc_info.value.raw_data["integration"]["id"] == "550e8400-e29b-41d4-a716-446655440000"
260
+ assert exc_info.value.raw_data["integration"]["name"] == "GITHUB"
261
+ assert exc_info.value.raw_data["integration"]["provider"] == "COMPOSIO"
262
+
263
+
264
+ def test_vellum_integration_service_execute_tool_legacy_403_error(vellum_client):
265
+ """Test backward compatibility with legacy 403 responses (before PR #14857)"""
266
+ from vellum.client.core.api_error import ApiError
267
+ from vellum.workflows.errors.types import WorkflowErrorCode
268
+
269
+ mock_client = vellum_client
270
+ mock_client.integrations = mock.MagicMock()
271
+
272
+ # Mock legacy 403 response format (just detail field)
273
+ legacy_error_body = {"detail": "You do not have permission to execute this tool."}
274
+
275
+ mock_client.integrations.execute_integration_tool.side_effect = ApiError(
276
+ status_code=403,
277
+ body=legacy_error_body,
278
+ )
279
+
280
+ service = VellumIntegrationService(client=mock_client)
281
+
282
+ with pytest.raises(NodeException) as exc_info:
283
+ service.execute_tool(
284
+ integration="GITHUB",
285
+ provider="COMPOSIO",
286
+ tool_name="GITHUB_CREATE_AN_ISSUE",
287
+ arguments={"repo": "user/repo"},
288
+ )
289
+
290
+ # THEN it should use the generic PROVIDER_CREDENTIALS_UNAVAILABLE code
291
+ assert exc_info.value.code == WorkflowErrorCode.PROVIDER_CREDENTIALS_UNAVAILABLE
292
+
293
+ # AND the message should match the legacy format
294
+ assert "You do not have permission" in exc_info.value.message
295
+
296
+ # AND raw_data should be None (no integration details available)
297
+ assert exc_info.value.raw_data is None
@@ -1,5 +1,6 @@
1
1
  from typing import Any, Dict, Optional
2
2
 
3
+ from vellum.client.core.api_error import ApiError
3
4
  from vellum.workflows.constants import VellumIntegrationProviderType
4
5
  from vellum.workflows.errors.types import WorkflowErrorCode
5
6
  from vellum.workflows.exceptions import NodeException
@@ -47,7 +48,7 @@ class VellumIntegrationService:
47
48
 
48
49
  return VellumIntegrationToolDetails(
49
50
  provider=VellumIntegrationProviderType(response.provider),
50
- integration=integration,
51
+ integration_name=integration,
51
52
  name=response.name,
52
53
  description=response.description,
53
54
  parameters=response.input_parameters,
@@ -78,7 +79,8 @@ class VellumIntegrationService:
78
79
  Dict containing the execution result data
79
80
 
80
81
  Raises:
81
- NodeException: If the tool execution fails
82
+ NodeException: If the tool execution fails, including credential errors
83
+ with integration details in raw_data
82
84
  """
83
85
  try:
84
86
  response = self._client.integrations.execute_integration_tool(
@@ -90,7 +92,37 @@ class VellumIntegrationService:
90
92
 
91
93
  # Return the data from the response
92
94
  return response.data
95
+ except ApiError as e:
96
+ # Handle structured 403 credential error responses
97
+ if e.status_code == 403 and isinstance(e.body, dict):
98
+ if "integration" in e.body and "message" in e.body:
99
+ integration_details = e.body["integration"]
100
+ error_message = e.body["message"]
101
+
102
+ # Keep integration details nested under "integration" key to keep raw_data raw
103
+ # and allow for future expansion
104
+ raw_data = {
105
+ "integration": integration_details,
106
+ }
107
+
108
+ raise NodeException(
109
+ message=error_message,
110
+ code=WorkflowErrorCode.INTEGRATION_CREDENTIALS_UNAVAILABLE,
111
+ raw_data=raw_data,
112
+ ) from e
113
+ else:
114
+ # Fallback for generic 403 responses
115
+ raise NodeException(
116
+ message=e.body.get("detail", "You do not have permission to execute this tool."),
117
+ code=WorkflowErrorCode.PROVIDER_CREDENTIALS_UNAVAILABLE,
118
+ ) from e
119
+ # Generic server error
120
+ raise NodeException(
121
+ message=f"Failed to execute tool {tool_name}: {str(e)}",
122
+ code=WorkflowErrorCode.INTERNAL_ERROR,
123
+ ) from e
93
124
  except Exception as e:
125
+ # Catch-all for non-API errors
94
126
  error_message = f"Failed to execute tool {tool_name}: {str(e)}"
95
127
  raise NodeException(
96
128
  message=error_message,
@@ -275,7 +275,7 @@ class VellumIntegrationNode(BaseNode[ToolCallingState], FunctionCallNodeMixin):
275
275
  try:
276
276
  vellum_service = VellumIntegrationService()
277
277
  result = vellum_service.execute_tool(
278
- integration=self.vellum_integration_tool.integration,
278
+ integration=self.vellum_integration_tool.integration_name,
279
279
  provider=self.vellum_integration_tool.provider.value,
280
280
  tool_name=self.vellum_integration_tool.name,
281
281
  arguments=arguments,
@@ -96,7 +96,10 @@ class Port:
96
96
  if self._condition is None:
97
97
  return False
98
98
 
99
- value = self._condition.resolve(state)
99
+ if isinstance(self._condition, BaseDescriptor):
100
+ value = self._condition.resolve(state)
101
+ else:
102
+ value = self._condition
100
103
  return bool(value)
101
104
  except InvalidExpressionException as e:
102
105
  raise NodeException(
@@ -0,0 +1,45 @@
1
+ import pytest
2
+ from unittest.mock import Mock
3
+
4
+ from vellum.workflows.ports.port import Port
5
+ from vellum.workflows.state.base import BaseState
6
+ from vellum.workflows.types.core import ConditionType
7
+
8
+
9
+ @pytest.mark.parametrize(
10
+ "condition_value,expected",
11
+ [
12
+ # Truthy values
13
+ (True, True),
14
+ (1, True),
15
+ ("hello", True),
16
+ ([1, 2, 3], True),
17
+ ({"key": "value"}, True),
18
+ (1.5, True),
19
+ (-1, True),
20
+ # Falsy values
21
+ (False, False),
22
+ (0, False),
23
+ ("", False),
24
+ ([], False),
25
+ ({}, False),
26
+ (0.0, False),
27
+ (None, False),
28
+ ],
29
+ )
30
+ def test_port_on_if_with_non_descriptor_values(condition_value, expected):
31
+ """Test that Port.on_if() correctly handles non-descriptor values."""
32
+
33
+ # Given a port with a non-descriptor value
34
+ port = Port.on_if(condition_value)
35
+
36
+ # Then the port properties should be correct
37
+ assert port._condition_type == ConditionType.IF
38
+ assert port._condition == condition_value
39
+
40
+ # When we resolve the condition
41
+ mock_state = Mock(spec=BaseState)
42
+ result = port.resolve_condition(mock_state)
43
+
44
+ # Then the result should be correct
45
+ assert result == expected
@@ -170,7 +170,7 @@ class VellumIntegrationToolDefinition(UniversalBaseModel):
170
170
 
171
171
  # Core identification
172
172
  provider: VellumIntegrationProviderType
173
- integration: str # "GITHUB", "SLACK", etc.
173
+ integration_name: str # "GITHUB", "SLACK", etc.
174
174
  name: str # Specific action like "GITHUB_CREATE_AN_ISSUE"
175
175
 
176
176
  # Required for tool base consistency
@@ -155,14 +155,14 @@ def test_vellum_integration_tool_definition_creation():
155
155
  """Test that VellumIntegrationToolDefinition can be created with required fields."""
156
156
  vellum_tool = VellumIntegrationToolDefinition(
157
157
  provider=VellumIntegrationProviderType.COMPOSIO,
158
- integration="GITHUB",
158
+ integration_name="GITHUB",
159
159
  name="create_issue",
160
160
  description="Create a new issue in a GitHub repository",
161
161
  )
162
162
 
163
163
  assert vellum_tool.type == "VELLUM_INTEGRATION"
164
164
  assert vellum_tool.provider == VellumIntegrationProviderType.COMPOSIO
165
- assert vellum_tool.integration == "GITHUB"
165
+ assert vellum_tool.integration_name == "GITHUB"
166
166
  assert vellum_tool.name == "create_issue"
167
167
  assert vellum_tool.description == "Create a new issue in a GitHub repository"
168
168
 
@@ -171,13 +171,13 @@ def test_vellum_integration_tool_definition_with_different_provider():
171
171
  """Test VellumIntegrationToolDefinition with a different provider."""
172
172
  vellum_tool = VellumIntegrationToolDefinition(
173
173
  provider=VellumIntegrationProviderType.COMPOSIO,
174
- integration="SLACK",
174
+ integration_name="SLACK",
175
175
  name="send_message",
176
176
  description="Send a message to a Slack channel",
177
177
  )
178
178
 
179
179
  assert vellum_tool.type == "VELLUM_INTEGRATION"
180
180
  assert vellum_tool.provider == VellumIntegrationProviderType.COMPOSIO
181
- assert vellum_tool.integration == "SLACK"
181
+ assert vellum_tool.integration_name == "SLACK"
182
182
  assert vellum_tool.name == "send_message"
183
183
  assert vellum_tool.description == "Send a message to a Slack channel"
@@ -335,7 +335,7 @@ def compile_vellum_integration_tool_definition(tool_def: VellumIntegrationToolDe
335
335
  try:
336
336
  service = VellumIntegrationService()
337
337
  tool_details = service.get_tool_definition(
338
- integration=tool_def.integration,
338
+ integration=tool_def.integration_name,
339
339
  provider=tool_def.provider.value,
340
340
  tool_name=tool_def.name,
341
341
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vellum-ai
3
- Version: 1.5.6
3
+ Version: 1.6.0
4
4
  Summary:
5
5
  License: MIT
6
6
  Requires-Python: >=3.9,<4.0
@@ -105,7 +105,7 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling
105
105
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_mcp_serialization.py,sha256=QhQbijeCnFeX1i3SMjHJg2WVAEt5JEO3dhFRv-mofdA,2458
106
106
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_parent_input.py,sha256=__LX4cuzbyZp_1wc-SI8X_J0tnhOkCEmRVUWLKI5aQM,4578
107
107
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_serialization.py,sha256=5yaoN5aM6VZZtsleQcSWpbNyWLE1nTnMF6KbLmCrlc8,10437
108
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_vellum_integration_serialization.py,sha256=A04hk1sQek6fs2Xd9a1ICc_L6uqIr8lx6f_djxbLKjs,2846
108
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_vellum_integration_serialization.py,sha256=zvLgIIgKTjAV5ObvqfoR7U-HSdOnGgOKxcCLoq5-Jvk,2851
109
109
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_workflow_deployment_serialization.py,sha256=XIZZr5POo2NLn2uEWm9EC3rejeBMoO4X-JtzTH6mvp4,4074
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
@@ -159,7 +159,7 @@ vellum/client/README.md,sha256=flqu57ubZNTfpq60CdLtJC9gp4WEkyjb_n_eZ4OYf9w,6497
159
159
  vellum/client/__init__.py,sha256=rMnKRqL5-356SBc-rfm56MkO87PuAi2mtcfBszcJU1M,74316
160
160
  vellum/client/core/__init__.py,sha256=lTcqUPXcx4112yLDd70RAPeqq6tu3eFMe1pKOqkW9JQ,1562
161
161
  vellum/client/core/api_error.py,sha256=44vPoTyWN59gonCIZMdzw7M1uspygiLnr3GNFOoVL2Q,614
162
- vellum/client/core/client_wrapper.py,sha256=CWWO5TahiAMy7Eh1vKC4QF2p7u4nS5n0TP1bSmi-_2E,2840
162
+ vellum/client/core/client_wrapper.py,sha256=lIaqax7YzeEvA_w0qUa4z08y8ZmFFnxRnQiZtMqLJNE,2840
163
163
  vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
164
164
  vellum/client/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
165
165
  vellum/client/core/force_multipart.py,sha256=awxh5MtcRYe74ehY8U76jzv6fYM_w_D3Rur7KQQzSDk,429
@@ -339,7 +339,7 @@ vellum/client/types/components_schemas_slim_composio_tool_definition.py,sha256=G
339
339
  vellum/client/types/composio_execute_tool_request.py,sha256=HmH2nKizSIWWUK6ENSqIytAJEAE1VTAX4JbGVXcaEhQ,730
340
340
  vellum/client/types/composio_execute_tool_response.py,sha256=XPV1x_S5weq_8WVfM_UGdI48aHJZVLGuS34ZLCNPiW4,728
341
341
  vellum/client/types/composio_integration_exec_config.py,sha256=NwTMyx09b3J7-sp6arTJXI7tB4inw2jE5jVwLPAjrGI,586
342
- vellum/client/types/composio_tool_definition.py,sha256=-C25uHVWPQWkEHFxnXXCWib7fTxlM7A4lNwqIEtkqNM,922
342
+ vellum/client/types/composio_tool_definition.py,sha256=nYTRala8QnC373i15-fhN-RhmQiUIz6GRG3Kbi6KFFU,937
343
343
  vellum/client/types/condition_combinator.py,sha256=NQ6-F85juf21jsRuZRA6PjIFv7ITVWG5myuuZdLxeQI,156
344
344
  vellum/client/types/conditional_node_result.py,sha256=nN5fZPgjyWQU_McV3sL_NcgW1V1VWU-KBIFgGTyOZdo,748
345
345
  vellum/client/types/conditional_node_result_data.py,sha256=Ui44n0Vd00O0RKzWb_mjOl8lVuV8XKOFNCYLple8L_8,568
@@ -523,18 +523,18 @@ vellum/client/types/named_scenario_input_string_variable_value_request.py,sha256
523
523
  vellum/client/types/named_scenario_input_video_variable_value_request.py,sha256=8j00EtL57E7ATsI7AdIYcMqJ5j2mVEyIKCl7h7jPSbs,677
524
524
  vellum/client/types/named_test_case_array_variable_value.py,sha256=cV_1PW-I1FGuNQewPgYTD_5khsPFIbOufgsXp5H_tSA,961
525
525
  vellum/client/types/named_test_case_array_variable_value_request.py,sha256=TrWmGV7W6Lf_vVn6oxHoPbW54yLnH4FmmULDL5ymcso,1012
526
- vellum/client/types/named_test_case_audio_variable_value.py,sha256=l5fAevDfShJDN_qUwiSkV2BmCFHWzz8km3sYoeqUuuI,708
527
- vellum/client/types/named_test_case_audio_variable_value_request.py,sha256=louXhEKLJIHzs1YxACNG73zf9JZJ7r04fTJo6cKLv6s,737
526
+ vellum/client/types/named_test_case_audio_variable_value.py,sha256=OF9drcRb2vHC5AxMjg3BJiixW0cEyk0kzM0L8sGykHQ,732
527
+ vellum/client/types/named_test_case_audio_variable_value_request.py,sha256=Yw1ckqV8JO5EuwGGvNer_BR2J_mS-ChbHn9T1JavXt4,761
528
528
  vellum/client/types/named_test_case_chat_history_variable_value.py,sha256=NyUPAAD9jq36LpOLq1dtc6Ro7ehTNeJ6zbcPXUA6a-U,772
529
529
  vellum/client/types/named_test_case_chat_history_variable_value_request.py,sha256=UuW870U5peUbWRNkYyMohP1QWdiRTBgO4dm-Y0MQ6KY,801
530
- vellum/client/types/named_test_case_document_variable_value.py,sha256=pfZr0BvBR4iV_rTUDLgSUpBrOAXr09jz21obMfdXQiw,661
531
- vellum/client/types/named_test_case_document_variable_value_request.py,sha256=Wk7MqfYVVJW5DgFXuj18HqaNReaP-coDBFmX59G_cTE,690
530
+ vellum/client/types/named_test_case_document_variable_value.py,sha256=YYzZdjSYcHl9BOP3l7nxpB4mkKXQhxZkDEdRhXcGOtU,685
531
+ vellum/client/types/named_test_case_document_variable_value_request.py,sha256=WtWz-91TJpR-GWGvMKcQ1AJ5dHLvLeQYwdXl2mZrA5c,714
532
532
  vellum/client/types/named_test_case_error_variable_value.py,sha256=uKE5Jimkl3_FD3W6GvqKLTzH4JbCIDWVAcCchantznk,732
533
533
  vellum/client/types/named_test_case_error_variable_value_request.py,sha256=Z0i5sygB9n_WMQx8Df8r-SsgLtYOsoESSms9iXK8FJ8,761
534
534
  vellum/client/types/named_test_case_function_call_variable_value.py,sha256=ZDOLgkI_GLBdF1rWYbfJSqBd_EHY51rzsWhigse0hUk,766
535
535
  vellum/client/types/named_test_case_function_call_variable_value_request.py,sha256=fcJwzazgElhrl1xJ2xja_-H7WdMVLoP9zV4rUYoCZM4,795
536
- vellum/client/types/named_test_case_image_variable_value.py,sha256=Ct3Z_MggnnMlRGsjVWmHEpVGDrnyXl8bLW7o4wfoRBg,643
537
- vellum/client/types/named_test_case_image_variable_value_request.py,sha256=dBkiRT_rtiwzhH8zoQHW4f1spuNEsgMKvfd51ugbffM,672
536
+ vellum/client/types/named_test_case_image_variable_value.py,sha256=9u4_AqeUiwaxspaF--sObDPg305l0J5x35pxffgZPj4,667
537
+ vellum/client/types/named_test_case_image_variable_value_request.py,sha256=80QJJzUoBnkQiicbMfu6-98rkTRBMsHXmdveuTsqNSI,696
538
538
  vellum/client/types/named_test_case_json_variable_value.py,sha256=wUVC_9Y7jfuZ2PZ_V14AFa9OlTHHtvuHmYuY4ln7ElA,689
539
539
  vellum/client/types/named_test_case_json_variable_value_request.py,sha256=G69Y9sXwpi8WUqXVLiwJ_R2dwNNMUKyEF0DF-3r6ElA,696
540
540
  vellum/client/types/named_test_case_number_variable_value.py,sha256=5WWDFcwIZJEcX3ua3Ou3fI2KiRLLEs8-B7TP0FH6ni8,692
@@ -545,8 +545,8 @@ vellum/client/types/named_test_case_string_variable_value.py,sha256=CtoNBWDHfVnt
545
545
  vellum/client/types/named_test_case_string_variable_value_request.py,sha256=99Dflz57ePdjo2vOsTnHEhd6_A_Viyq_jLZ2gCbpIhQ,697
546
546
  vellum/client/types/named_test_case_variable_value.py,sha256=_kZoWpgTToCB4Cr7vJIlI4dAwsiQDbGeGXIixeEciZc,1632
547
547
  vellum/client/types/named_test_case_variable_value_request.py,sha256=jDVzZ5VPFjzUyblcoDq9S-Lh2NN9yix3J2Ubv1TwmSw,1903
548
- vellum/client/types/named_test_case_video_variable_value.py,sha256=nztLFVO1Sltf2H8Bx24qC_iB-yjsRxqfK5wNUdWf1xw,643
549
- vellum/client/types/named_test_case_video_variable_value_request.py,sha256=CS9GQq3ziCfjQtYgTPRw5BNj30lsSUf_gYiNyDmwg9M,672
548
+ vellum/client/types/named_test_case_video_variable_value.py,sha256=8lTwnF_kArykf8a2i73xULUP1zNQeeF_KA_UE27AWXg,667
549
+ vellum/client/types/named_test_case_video_variable_value_request.py,sha256=pErjItSd2CoquJtiSW8uz5oDTvS1LMuB_ocWCvs1oWk,696
550
550
  vellum/client/types/new_member_join_behavior_enum.py,sha256=s9Z_6JKM6R4gPNtIJYCe84_DNBHucj6dHOx6bdFPoLo,258
551
551
  vellum/client/types/node_execution_fulfilled_body.py,sha256=foRkObll1ZBsh3Po6tHT6CKnDcUaMFEoQWc-rjLDn7A,849
552
552
  vellum/client/types/node_execution_fulfilled_event.py,sha256=WRuXDamUa4FefGgRC6JAoDRrPlEf9AbC74EZxSH24E4,1897
@@ -700,7 +700,7 @@ vellum/client/types/sentence_chunker_config.py,sha256=WQGyc0jUiATYhQ7ezbBN06--ul
700
700
  vellum/client/types/sentence_chunker_config_request.py,sha256=Da2ANuD4icLxI74emC4z2EEZjeY2k1w9HnEQt2g1AvI,680
701
701
  vellum/client/types/sentence_chunking.py,sha256=MyEImiN0dhWEVFvD76Q6mCqIEjZcyY__Hhu0j9Gjs6Y,747
702
702
  vellum/client/types/sentence_chunking_request.py,sha256=itrdqiKJJ7UKWVGTfj9sJu3kMSThkBF_Qj-3KqFunP4,776
703
- vellum/client/types/slim_composio_tool_definition.py,sha256=6biQasvtevBsS9EjJ66GVHAC9G0o54l2VMfHORzc8Ac,718
703
+ vellum/client/types/slim_composio_tool_definition.py,sha256=1wQRXqS4-DVq0JO8F7L2Vcnng1eSBLO1Z25tzAt_t28,733
704
704
  vellum/client/types/slim_deployment_read.py,sha256=lEJ8Fx7QSmqjEK-LcR0y_hX2ywcaPbYjxINwPGy_ofw,1733
705
705
  vellum/client/types/slim_document.py,sha256=aytvaz8SF6MSSEA3iLXP7ZgZOw33CA-_bv2iSj5cH24,2409
706
706
  vellum/client/types/slim_document_document_to_document_index.py,sha256=Ogo8OFjtmcHjDmIynB9vckfjSZxFNhKM-cYpqSfREGI,1515
@@ -748,18 +748,18 @@ vellum/client/types/terminal_node_result_output.py,sha256=hOzkyk90PDY2ZGd0JSrlEh
748
748
  vellum/client/types/terminal_node_search_results_result.py,sha256=jXRnFcB7aSpEP7ivEk1rCd0jtDP3pXOODEuEhCm_Lt4,847
749
749
  vellum/client/types/terminal_node_string_result.py,sha256=Fj4v9vZI5gijB9xtrQ7u6ue7TgDmeA3ziW3yxuZbGUw,762
750
750
  vellum/client/types/test_case_array_variable_value.py,sha256=_SLmKw4QDYnUjk1rtdJgXyQ0wrEHRXOSS7mmTFcjniM,974
751
- vellum/client/types/test_case_audio_variable_value.py,sha256=tTWipY4ZuUfVNibNR6Iy_MHC__Fp4nf3ofCLVy1_PtM,750
751
+ vellum/client/types/test_case_audio_variable_value.py,sha256=WrZvvEhlwcuGpDrkChBF4Atwprgrw9LQ7hXhvmCSbxQ,774
752
752
  vellum/client/types/test_case_chat_history_variable_value.py,sha256=YDKIN6Kmk0iE_zjVZP60JK7gGkBTgqGtLPRjYuzmC1Q,789
753
- vellum/client/types/test_case_document_variable_value.py,sha256=jzjTDAWYGfqpxrjSSmwAC5yznGCgoMDdSZXCXLxpXF8,770
753
+ vellum/client/types/test_case_document_variable_value.py,sha256=6OPaqWms55sia4fGkXKkVWLIXlcib-2nTzOxwg9CM_8,794
754
754
  vellum/client/types/test_case_error_variable_value.py,sha256=XE0LthR-AFjn4gAYIGdjaB0EoRUNYxiU1KrnvWiGOGE,750
755
755
  vellum/client/types/test_case_function_call_variable_value.py,sha256=8l3L_bt4MwmdoejHVgL25rPjqMI1AmPZTljyREXe9Fg,783
756
- vellum/client/types/test_case_image_variable_value.py,sha256=dkXp_CQjokcBUidjNYkx9z0lwv56CEhGktyGTEBsOOg,750
756
+ vellum/client/types/test_case_image_variable_value.py,sha256=3_2tTQBYQwOoEAe7Mcrx3meFr7WY4fSZ0ppl92xHQYA,774
757
757
  vellum/client/types/test_case_json_variable_value.py,sha256=-wy1WvxTZcKSVFhrpdJ7GukQBmYOokxeIDxF798Epzw,706
758
758
  vellum/client/types/test_case_number_variable_value.py,sha256=im2Ouf0e869f4SEZKah6564-UEKBmyu89DYvj1fg1io,712
759
759
  vellum/client/types/test_case_search_results_variable_value.py,sha256=UDkPZPUbQ0ymfEsxrcBSfA9P3XvUf7hvs3ivREuBJ1w,800
760
760
  vellum/client/types/test_case_string_variable_value.py,sha256=L6qt-PCBp6m6g8BZgiy8tePIHm58ThnxDbPEKkAnEKQ,707
761
761
  vellum/client/types/test_case_variable_value.py,sha256=eIifSIZQtCI9x3CqX5Sojdvq97TFeFIzFtah3VmIRIU,1435
762
- vellum/client/types/test_case_video_variable_value.py,sha256=4EHIq1aVCtxtY70p3qhDPUC_WlPZvVD2kCbUt3f0yNM,749
762
+ vellum/client/types/test_case_video_variable_value.py,sha256=b19K3fos6A7xG_djQ_vKad8GYlNtZmTKNlFdqDM_0MI,773
763
763
  vellum/client/types/test_suite_run_deployment_release_tag_exec_config.py,sha256=Z8xAr72cdA_fA_WKenqCOTGnqB0kFXQyRPctYDc7eFE,1118
764
764
  vellum/client/types/test_suite_run_deployment_release_tag_exec_config_data.py,sha256=CxtPXzIMLf4N__mSl0w8B9KHQH6yB0lPlNWkKWEGCWM,892
765
765
  vellum/client/types/test_suite_run_deployment_release_tag_exec_config_data_request.py,sha256=Rlkjn7P6N2Ok8Zjt6qZiKJ3-ep3F9gSGAFhJOyIVY20,899
@@ -1801,7 +1801,7 @@ vellum/workflows/emitters/vellum_emitter.py,sha256=t4ixrN0NNXrydMP9PVKYvcOMxoMqs
1801
1801
  vellum/workflows/environment/__init__.py,sha256=TJz0m9dwIs6YOwCTeuN0HHsU-ecyjc1OJXx4AFy83EQ,121
1802
1802
  vellum/workflows/environment/environment.py,sha256=Ck3RPKXJvtMGx_toqYQQQF-ZwXm5ijVwJpEPTeIJ4_Q,471
1803
1803
  vellum/workflows/errors/__init__.py,sha256=tWGPu5xyAU8gRb8_bl0fL7OfU3wxQ9UH6qVwy4X4P_Q,113
1804
- vellum/workflows/errors/types.py,sha256=1LQzsEwCL-kqLGUxZcgJWahL-XNfIOwCz_5f_fWzLrM,4236
1804
+ vellum/workflows/errors/types.py,sha256=zz-cQ74xut08eejJ8SrHYaNuoohhBRG_kO1X7TGN-mU,4503
1805
1805
  vellum/workflows/events/__init__.py,sha256=V4mh766fyA70WvHelm9kfVZGrUgEKcJ9tJt8EepfQYU,832
1806
1806
  vellum/workflows/events/context.py,sha256=vCfMIPmz4j9Om36rRWa35A_JU_VccWWS52_mZkkqxak,3345
1807
1807
  vellum/workflows/events/exception_handling.py,sha256=2okFtCzrOzaCP-HEwBPMvHn-evlyyE1zRkmIYjR__jQ,1975
@@ -1873,8 +1873,8 @@ vellum/workflows/integrations/composio_service.py,sha256=rSliaZtNiBcDSvDxz9k5i1K
1873
1873
  vellum/workflows/integrations/mcp_service.py,sha256=9DYb8dg2_kgc1UOu830kxhaFlt9yTbhKPhK3L6kb1t4,9831
1874
1874
  vellum/workflows/integrations/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1875
1875
  vellum/workflows/integrations/tests/test_mcp_service.py,sha256=q_DYrDkIqI4sQBNgID4YdbM4e9tneLVWY8YmI4R26d8,8859
1876
- vellum/workflows/integrations/tests/test_vellum_integration_service.py,sha256=KlzS86r3nxOqliCUgpuauAGkrR6jNDbytID0_i_MLkc,7970
1877
- vellum/workflows/integrations/vellum_integration_service.py,sha256=oLLYS2BqE_9HBpzWcvvkPxqBh09Kilzy7xXX-m-PbTk,3665
1876
+ vellum/workflows/integrations/tests/test_vellum_integration_service.py,sha256=n_n42FnwbR7YMd1sEVMphdOUWsWXCPw_caY6FnxNxAU,11322
1877
+ vellum/workflows/integrations/vellum_integration_service.py,sha256=xgWOpjgVT7VZJStExw0_o3egimbCt8tQHBsEbc85DP8,5256
1878
1878
  vellum/workflows/logging.py,sha256=_a217XogktV4Ncz6xKFz7WfYmZAzkfVRVuC0rWob8ls,437
1879
1879
  vellum/workflows/nodes/__init__.py,sha256=zymtc3_iW2rFmMR-sayTLuN6ZsAw8VnJweWPsjQk2-Q,1197
1880
1880
  vellum/workflows/nodes/bases/__init__.py,sha256=cniHuz_RXdJ4TQgD8CBzoiKDiPxg62ErdVpCbWICX64,58
@@ -1978,7 +1978,7 @@ vellum/workflows/nodes/displayable/tool_calling_node/tests/__init__.py,sha256=47
1978
1978
  vellum/workflows/nodes/displayable/tool_calling_node/tests/test_composio_service.py,sha256=in1fbEz5x1tx3uKv9YXdvOncsHucNL8Ro6Go7lBuuOQ,8962
1979
1979
  vellum/workflows/nodes/displayable/tool_calling_node/tests/test_node.py,sha256=GZoeybB9uM7ai8sBLAtUMHrMVgh-WrJDWrKZci6feDs,11892
1980
1980
  vellum/workflows/nodes/displayable/tool_calling_node/tests/test_utils.py,sha256=EmKFA-ELdTzlK0xMqWnuSZPoGNLYCwk6b0amTqirZo0,11305
1981
- vellum/workflows/nodes/displayable/tool_calling_node/utils.py,sha256=M_kIf2iBpleao-wxkwscNlfYp_3Yf9JvENrv6ks5hTE,23652
1981
+ vellum/workflows/nodes/displayable/tool_calling_node/utils.py,sha256=-6Qb8GuHlpYaOLlQcJSNYmRlZXEcnYzaCjIvH-scfMY,23657
1982
1982
  vellum/workflows/nodes/displayable/web_search_node/__init__.py,sha256=8FOnEP-n-U68cvxTlJW9wphIAGHq5aqjzLM-DoSSXnU,61
1983
1983
  vellum/workflows/nodes/displayable/web_search_node/node.py,sha256=NQYux2bOtuBF5E4tn-fXi5y3btURPRrNqMSM9MAZYI4,5091
1984
1984
  vellum/workflows/nodes/displayable/web_search_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1996,7 +1996,8 @@ vellum/workflows/outputs/__init__.py,sha256=AyZ4pRh_ACQIGvkf0byJO46EDnSix1ZCAXfv
1996
1996
  vellum/workflows/outputs/base.py,sha256=zy02zr9DmG3j7Xp3Q8xiOiXFF_c7uNh76jf2LiMS-qE,10132
1997
1997
  vellum/workflows/ports/__init__.py,sha256=bZuMt-R7z5bKwpu4uPW7LlJeePOQWmCcDSXe5frUY5g,101
1998
1998
  vellum/workflows/ports/node_ports.py,sha256=SM9uLAaoaE1HwR-Uqwf2v5zZK5iFnphKs6mE5Ls7ldE,2877
1999
- vellum/workflows/ports/port.py,sha256=PYhmzEHgJyjUjSFkPIQ38cNIKpcXrhYiZlj7nZC5yCk,3989
1999
+ vellum/workflows/ports/port.py,sha256=zaY02b-Fe0Mb16i7vLT2ouu5uMjept1nlhnqYdGDU-s,4111
2000
+ vellum/workflows/ports/tests/test_port.py,sha256=WEE83wct8C01Lq_asSbS0MfL5BLA2avsS0UqJMye4OU,1215
2000
2001
  vellum/workflows/ports/utils.py,sha256=gD8iijX8D3tjx1Tj2FW8-QIubCphTqW_gqROt6w6MOM,3790
2001
2002
  vellum/workflows/references/__init__.py,sha256=glHFC1VfXmcbNvH5VzFbkT03d8_D7MMcvEcsUBrzLIs,591
2002
2003
  vellum/workflows/references/constant.py,sha256=6yUT4q1sMj1hkI_tzzQ9AYcmeeDYFUNCqUq_W2DN0S8,540
@@ -2034,15 +2035,15 @@ vellum/workflows/tests/test_undefined.py,sha256=zMCVliCXVNLrlC6hEGyOWDnQADJ2g83y
2034
2035
  vellum/workflows/types/__init__.py,sha256=KxUTMBGzuRCfiMqzzsykOeVvrrkaZmTTo1a7SLu8gRM,68
2035
2036
  vellum/workflows/types/code_execution_node_wrappers.py,sha256=fewX9bqF_4TZuK-gZYIn12s31-k03vHMGRpvFAPm11Y,3206
2036
2037
  vellum/workflows/types/core.py,sha256=yKm3sE02ult969q80DTmawiwYqodVjcAW-zlaUIgIv4,1495
2037
- vellum/workflows/types/definition.py,sha256=_6RqnqGm5RGXsoTaDLu2mCHoldfcJY7hpAtBfOgyukk,7677
2038
+ vellum/workflows/types/definition.py,sha256=PWJF1SAopdOZcLcxz1ZtGYOa0oH0-dxjFaa_tuGb6SI,7682
2038
2039
  vellum/workflows/types/generics.py,sha256=8jptbEx1fnJV0Lhj0MpCJOT6yNiEWeTOYOwrEAb5CRU,1576
2039
2040
  vellum/workflows/types/stack.py,sha256=h7NE0vXR7l9DevFBIzIAk1Zh59K-kECQtDTKOUunwMY,1314
2040
2041
  vellum/workflows/types/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2041
- vellum/workflows/types/tests/test_definition.py,sha256=vwH11nY7OGpyVOLul_CH6_BPn8D1JyMJtc_ZCkwKi2U,7173
2042
+ vellum/workflows/types/tests/test_definition.py,sha256=QUI9_Wsm2k-ZxQTXogsB0L4csSvVFOvLXHb-asC6K2w,7193
2042
2043
  vellum/workflows/types/tests/test_utils.py,sha256=UnZog59tR577mVwqZRqqWn2fScoOU1H6up0EzS8zYhw,2536
2043
2044
  vellum/workflows/types/utils.py,sha256=mTctHITBybpt4855x32oCKALBEcMNLn-9cCmfEKgJHQ,6498
2044
2045
  vellum/workflows/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2045
- vellum/workflows/utils/functions.py,sha256=_esuDTYKEORjBoC0YGT3ANO--OswaKu6s-_42_kzlwU,13057
2046
+ vellum/workflows/utils/functions.py,sha256=QbRoymgG_NgEvZcoyb_ofmP4o9fzuBlFRZ8s0Ivk11U,13062
2046
2047
  vellum/workflows/utils/hmac.py,sha256=JJCczc6pyV6DuE1Oa0QVfYPUN_of3zEYmGFib3OZnrE,1135
2047
2048
  vellum/workflows/utils/names.py,sha256=QtHquoaGqRseu5gg2OcVGI2d_CMcEOvjb9KspwH4C-A,552
2048
2049
  vellum/workflows/utils/pydantic_schema.py,sha256=eR_bBtY-T0pttJP-ARwagSdCOnwPUtiT3cegm2lzDTQ,1310
@@ -2061,8 +2062,8 @@ vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnad
2061
2062
  vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2062
2063
  vellum/workflows/workflows/tests/test_base_workflow.py,sha256=Boa-_m9ii2Qsa1RvVM-VYniF7zCpzGgEGy-OnPZkrHg,23941
2063
2064
  vellum/workflows/workflows/tests/test_context.py,sha256=VJBUcyWVtMa_lE5KxdhgMu0WYNYnUQUDvTF7qm89hJ0,2333
2064
- vellum_ai-1.5.6.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
2065
- vellum_ai-1.5.6.dist-info/METADATA,sha256=RfoxNhrrppYe542ZzWrysREowPpM5RkWQtNgrAFgVBU,5547
2066
- vellum_ai-1.5.6.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
2067
- vellum_ai-1.5.6.dist-info/entry_points.txt,sha256=xVavzAKN4iF_NbmhWOlOkHluka0YLkbN_pFQ9pW3gLI,117
2068
- vellum_ai-1.5.6.dist-info/RECORD,,
2065
+ vellum_ai-1.6.0.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
2066
+ vellum_ai-1.6.0.dist-info/METADATA,sha256=WvlB8Aty09_z0FkG7VwBs1337WHiohpRkOObDT3M_s4,5547
2067
+ vellum_ai-1.6.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
2068
+ vellum_ai-1.6.0.dist-info/entry_points.txt,sha256=xVavzAKN4iF_NbmhWOlOkHluka0YLkbN_pFQ9pW3gLI,117
2069
+ vellum_ai-1.6.0.dist-info/RECORD,,
@@ -63,6 +63,6 @@ def test_serialize_workflow():
63
63
  function = functions_value[0]
64
64
  assert function["type"] == "VELLUM_INTEGRATION"
65
65
  assert function["provider"] == "COMPOSIO" # VellumIntegrationProviderType.COMPOSIO
66
- assert function["integration"] == "GITHUB"
66
+ assert function["integration_name"] == "GITHUB"
67
67
  assert function["name"] == "create_issue"
68
68
  assert function["description"] == "Create a new issue in a GitHub repository"