vellum-ai 1.5.5__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.
- vellum/__init__.py +2 -0
- vellum/client/core/client_wrapper.py +2 -2
- vellum/client/types/__init__.py +2 -0
- vellum/client/types/composio_tool_definition.py +1 -0
- vellum/client/types/integration_auth_config_integration.py +23 -0
- vellum/client/types/integration_auth_config_integration_credential.py +1 -1
- vellum/client/types/integration_read.py +1 -1
- vellum/client/types/named_test_case_audio_variable_value.py +1 -1
- vellum/client/types/named_test_case_audio_variable_value_request.py +1 -1
- vellum/client/types/named_test_case_document_variable_value.py +1 -1
- vellum/client/types/named_test_case_document_variable_value_request.py +1 -1
- vellum/client/types/named_test_case_image_variable_value.py +1 -1
- vellum/client/types/named_test_case_image_variable_value_request.py +1 -1
- vellum/client/types/named_test_case_video_variable_value.py +1 -1
- vellum/client/types/named_test_case_video_variable_value_request.py +1 -1
- vellum/client/types/slim_composio_tool_definition.py +1 -0
- vellum/client/types/slim_integration_auth_config_read.py +3 -1
- vellum/client/types/slim_integration_read.py +1 -1
- vellum/client/types/test_case_audio_variable_value.py +1 -1
- vellum/client/types/test_case_document_variable_value.py +1 -1
- vellum/client/types/test_case_image_variable_value.py +1 -1
- vellum/client/types/test_case_video_variable_value.py +1 -1
- vellum/client/types/tool_definition_integration.py +1 -1
- vellum/types/integration_auth_config_integration.py +3 -0
- vellum/workflows/errors/types.py +3 -0
- vellum/workflows/integrations/tests/test_vellum_integration_service.py +84 -0
- vellum/workflows/integrations/vellum_integration_service.py +34 -2
- vellum/workflows/nodes/displayable/tool_calling_node/utils.py +1 -1
- vellum/workflows/ports/port.py +4 -1
- vellum/workflows/ports/tests/test_port.py +45 -0
- vellum/workflows/types/definition.py +1 -1
- vellum/workflows/types/tests/test_definition.py +4 -4
- vellum/workflows/utils/functions.py +1 -1
- {vellum_ai-1.5.5.dist-info → vellum_ai-1.6.0.dist-info}/METADATA +1 -1
- {vellum_ai-1.5.5.dist-info → vellum_ai-1.6.0.dist-info}/RECORD +39 -36
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_vellum_integration_serialization.py +1 -1
- {vellum_ai-1.5.5.dist-info → vellum_ai-1.6.0.dist-info}/LICENSE +0 -0
- {vellum_ai-1.5.5.dist-info → vellum_ai-1.6.0.dist-info}/WHEEL +0 -0
- {vellum_ai-1.5.5.dist-info → vellum_ai-1.6.0.dist-info}/entry_points.txt +0 -0
vellum/__init__.py
CHANGED
@@ -222,6 +222,7 @@ from .client.types import (
|
|
222
222
|
InitiatedWorkflowNodeResultEvent,
|
223
223
|
InstructorVectorizerConfig,
|
224
224
|
InstructorVectorizerConfigRequest,
|
225
|
+
IntegrationAuthConfigIntegration,
|
225
226
|
IntegrationAuthConfigIntegrationCredential,
|
226
227
|
IntegrationCredentialAccessType,
|
227
228
|
IntegrationName,
|
@@ -961,6 +962,7 @@ __all__ = [
|
|
961
962
|
"InitiatedWorkflowNodeResultEvent",
|
962
963
|
"InstructorVectorizerConfig",
|
963
964
|
"InstructorVectorizerConfigRequest",
|
965
|
+
"IntegrationAuthConfigIntegration",
|
964
966
|
"IntegrationAuthConfigIntegrationCredential",
|
965
967
|
"IntegrationCredentialAccessType",
|
966
968
|
"IntegrationName",
|
@@ -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.
|
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.
|
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:
|
vellum/client/types/__init__.py
CHANGED
@@ -230,6 +230,7 @@ from .initiated_prompt_execution_meta import InitiatedPromptExecutionMeta
|
|
230
230
|
from .initiated_workflow_node_result_event import InitiatedWorkflowNodeResultEvent
|
231
231
|
from .instructor_vectorizer_config import InstructorVectorizerConfig
|
232
232
|
from .instructor_vectorizer_config_request import InstructorVectorizerConfigRequest
|
233
|
+
from .integration_auth_config_integration import IntegrationAuthConfigIntegration
|
233
234
|
from .integration_auth_config_integration_credential import IntegrationAuthConfigIntegrationCredential
|
234
235
|
from .integration_credential_access_type import IntegrationCredentialAccessType
|
235
236
|
from .integration_name import IntegrationName
|
@@ -935,6 +936,7 @@ __all__ = [
|
|
935
936
|
"InitiatedWorkflowNodeResultEvent",
|
936
937
|
"InstructorVectorizerConfig",
|
937
938
|
"InstructorVectorizerConfigRequest",
|
939
|
+
"IntegrationAuthConfigIntegration",
|
938
940
|
"IntegrationAuthConfigIntegrationCredential",
|
939
941
|
"IntegrationCredentialAccessType",
|
940
942
|
"IntegrationName",
|
@@ -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]]
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
2
|
+
|
3
|
+
import typing
|
4
|
+
|
5
|
+
import pydantic
|
6
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
7
|
+
from .integration_name import IntegrationName
|
8
|
+
from .integration_provider import IntegrationProvider
|
9
|
+
|
10
|
+
|
11
|
+
class IntegrationAuthConfigIntegration(UniversalBaseModel):
|
12
|
+
id: str
|
13
|
+
provider: IntegrationProvider = "COMPOSIO"
|
14
|
+
name: IntegrationName
|
15
|
+
|
16
|
+
if IS_PYDANTIC_V2:
|
17
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
18
|
+
else:
|
19
|
+
|
20
|
+
class Config:
|
21
|
+
frozen = True
|
22
|
+
smart_union = True
|
23
|
+
extra = pydantic.Extra.allow
|
@@ -7,7 +7,7 @@ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
7
|
|
8
8
|
|
9
9
|
class IntegrationAuthConfigIntegrationCredential(UniversalBaseModel):
|
10
|
-
id:
|
10
|
+
id: str
|
11
11
|
|
12
12
|
if IS_PYDANTIC_V2:
|
13
13
|
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # 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_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_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:
|
@@ -4,6 +4,7 @@ import typing
|
|
4
4
|
|
5
5
|
import pydantic
|
6
6
|
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
7
|
+
from .integration_auth_config_integration import IntegrationAuthConfigIntegration
|
7
8
|
from .integration_auth_config_integration_credential import IntegrationAuthConfigIntegrationCredential
|
8
9
|
from .integration_credential_access_type import IntegrationCredentialAccessType
|
9
10
|
|
@@ -13,7 +14,8 @@ class SlimIntegrationAuthConfigRead(UniversalBaseModel):
|
|
13
14
|
A slim representation of an Integration Auth Config.
|
14
15
|
"""
|
15
16
|
|
16
|
-
id:
|
17
|
+
id: str
|
18
|
+
integration: IntegrationAuthConfigIntegration
|
17
19
|
integration_credentials: typing.Optional[typing.List[IntegrationAuthConfigIntegrationCredential]] = None
|
18
20
|
default_access_type: typing.Optional[IntegrationCredentialAccessType] = None
|
19
21
|
|
@@ -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
|
vellum/workflows/errors/types.py
CHANGED
@@ -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
|
-
|
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.
|
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,
|
vellum/workflows/ports/port.py
CHANGED
@@ -96,7 +96,10 @@ class Port:
|
|
96
96
|
if self._condition is None:
|
97
97
|
return False
|
98
98
|
|
99
|
-
|
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
|
-
|
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
|
-
|
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.
|
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
|
-
|
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.
|
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.
|
338
|
+
integration=tool_def.integration_name,
|
339
339
|
provider=tool_def.provider.value,
|
340
340
|
tool_name=tool_def.name,
|
341
341
|
)
|
@@ -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=
|
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
|
@@ -154,12 +154,12 @@ vellum_ee/workflows/tests/test_registry.py,sha256=B8xRIuEyLWfSqrYoPldNQXhKPfe50P
|
|
154
154
|
vellum_ee/workflows/tests/test_serialize_module.py,sha256=d4ZpMd3oIxiq-sBXeSQESS6ix6-1P6rdCRFqBEReJIU,2882
|
155
155
|
vellum_ee/workflows/tests/test_server.py,sha256=dXFBraU99Y6cKp2aBhLFXQTScSRcE9WaWjo1z9piqdU,23344
|
156
156
|
vellum_ee/workflows/tests/test_virtual_files.py,sha256=TJEcMR0v2S8CkloXNmCHA0QW0K6pYNGaIjraJz7sFvY,2762
|
157
|
-
vellum/__init__.py,sha256=
|
157
|
+
vellum/__init__.py,sha256=i7aah42VTp3735JX69uHUipLZBD8PwX_CXUY_9t-zuY,49356
|
158
158
|
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=
|
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
|
@@ -265,7 +265,7 @@ vellum/client/resources/workspaces/client.py,sha256=36KYa2FDu6h65q2GscUFOJs4qKei
|
|
265
265
|
vellum/client/resources/workspaces/raw_client.py,sha256=M3Ewk1ZfEZ44EeTvBtBNoNKi5whwfLY-1GR07SyfDTI,3517
|
266
266
|
vellum/client/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
267
267
|
vellum/client/tests/test_utils.py,sha256=zk8z45-2xrm9sZ2hq8PTqY8MXmXtPqMqYK0VBBX0GHg,1176
|
268
|
-
vellum/client/types/__init__.py,sha256=
|
268
|
+
vellum/client/types/__init__.py,sha256=KwWQ6Bw5bxx2PIECWgxnTdbht-saV-fcPFDVNDA9g-g,74697
|
269
269
|
vellum/client/types/ad_hoc_execute_prompt_event.py,sha256=B69EesIH6fpNsdoiJaSG9zF1Sl17FnjoTu4CBkUSoHk,608
|
270
270
|
vellum/client/types/ad_hoc_expand_meta.py,sha256=Kajcj3dKKed5e7uZibRnE3ZonK_bB2JPM-3aLjLfUp4,1295
|
271
271
|
vellum/client/types/ad_hoc_fulfilled_prompt_execution_meta.py,sha256=5kD6ZcbU8P8ynK0lMD8Mh7vHzvQt06ziMyphvWYg6FU,968
|
@@ -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
|
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
|
@@ -482,11 +482,12 @@ vellum/client/types/initiated_prompt_execution_meta.py,sha256=5sbNQJdyjkHZvkt2Eu
|
|
482
482
|
vellum/client/types/initiated_workflow_node_result_event.py,sha256=bANCbRTVoklNXjs3-nwGA5G_TK1j0FaqdrVHonl5ZLA,1311
|
483
483
|
vellum/client/types/instructor_vectorizer_config.py,sha256=5weLeldZKmA9cWf3Xcoe_Zn9_M9jSlWvxVj9Ml3GgcM,695
|
484
484
|
vellum/client/types/instructor_vectorizer_config_request.py,sha256=B5Wy5FI8utwi4sIvwFTK0evd78pbM9ic9jO6pBM2dFw,702
|
485
|
-
vellum/client/types/
|
485
|
+
vellum/client/types/integration_auth_config_integration.py,sha256=W3DrzVPwLrqm0wCYVF-sHyQPoKNxoliFgFJWEwW_Yqc,710
|
486
|
+
vellum/client/types/integration_auth_config_integration_credential.py,sha256=lUNuJ1GyFps3M85Mff1C-SAeEacCMkJdmayFfYrTFXA,547
|
486
487
|
vellum/client/types/integration_credential_access_type.py,sha256=sWkuDjW3aD7ApZ1xQ7Bu8g5kCIwqUqzm1TDliUQWeRI,178
|
487
488
|
vellum/client/types/integration_name.py,sha256=SzwAJ2xbIZ94yog1D_Zpd8cH_XEFZG0ygzGdZojEPbo,378
|
488
489
|
vellum/client/types/integration_provider.py,sha256=lIh3yPyPEzmSAu8L4Gsd-iDkmDSNobo0_TB75zMtIXk,129
|
489
|
-
vellum/client/types/integration_read.py,sha256=
|
490
|
+
vellum/client/types/integration_read.py,sha256=sUNCS01TIlHPJHEH3ZheIbPi-CplbFQ5XAV1QtOO1Gg,1035
|
490
491
|
vellum/client/types/invoked_port.py,sha256=nw2k-y7NrpcH6T1V96U3F8_pbrsceqBPIz3RQXN8gJY,518
|
491
492
|
vellum/client/types/iteration_state_enum.py,sha256=83JSh842OJgQiLtNn1KMimy6RlEYRVH3mDmYWS6Ewzo,180
|
492
493
|
vellum/client/types/jinja_prompt_block.py,sha256=IRWwjk9sGoF49bycXzWP_XYo8fksglZ0hu5geCTystM,903
|
@@ -522,18 +523,18 @@ vellum/client/types/named_scenario_input_string_variable_value_request.py,sha256
|
|
522
523
|
vellum/client/types/named_scenario_input_video_variable_value_request.py,sha256=8j00EtL57E7ATsI7AdIYcMqJ5j2mVEyIKCl7h7jPSbs,677
|
523
524
|
vellum/client/types/named_test_case_array_variable_value.py,sha256=cV_1PW-I1FGuNQewPgYTD_5khsPFIbOufgsXp5H_tSA,961
|
524
525
|
vellum/client/types/named_test_case_array_variable_value_request.py,sha256=TrWmGV7W6Lf_vVn6oxHoPbW54yLnH4FmmULDL5ymcso,1012
|
525
|
-
vellum/client/types/named_test_case_audio_variable_value.py,sha256=
|
526
|
-
vellum/client/types/named_test_case_audio_variable_value_request.py,sha256=
|
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
|
527
528
|
vellum/client/types/named_test_case_chat_history_variable_value.py,sha256=NyUPAAD9jq36LpOLq1dtc6Ro7ehTNeJ6zbcPXUA6a-U,772
|
528
529
|
vellum/client/types/named_test_case_chat_history_variable_value_request.py,sha256=UuW870U5peUbWRNkYyMohP1QWdiRTBgO4dm-Y0MQ6KY,801
|
529
|
-
vellum/client/types/named_test_case_document_variable_value.py,sha256=
|
530
|
-
vellum/client/types/named_test_case_document_variable_value_request.py,sha256=
|
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
|
531
532
|
vellum/client/types/named_test_case_error_variable_value.py,sha256=uKE5Jimkl3_FD3W6GvqKLTzH4JbCIDWVAcCchantznk,732
|
532
533
|
vellum/client/types/named_test_case_error_variable_value_request.py,sha256=Z0i5sygB9n_WMQx8Df8r-SsgLtYOsoESSms9iXK8FJ8,761
|
533
534
|
vellum/client/types/named_test_case_function_call_variable_value.py,sha256=ZDOLgkI_GLBdF1rWYbfJSqBd_EHY51rzsWhigse0hUk,766
|
534
535
|
vellum/client/types/named_test_case_function_call_variable_value_request.py,sha256=fcJwzazgElhrl1xJ2xja_-H7WdMVLoP9zV4rUYoCZM4,795
|
535
|
-
vellum/client/types/named_test_case_image_variable_value.py,sha256=
|
536
|
-
vellum/client/types/named_test_case_image_variable_value_request.py,sha256=
|
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
|
537
538
|
vellum/client/types/named_test_case_json_variable_value.py,sha256=wUVC_9Y7jfuZ2PZ_V14AFa9OlTHHtvuHmYuY4ln7ElA,689
|
538
539
|
vellum/client/types/named_test_case_json_variable_value_request.py,sha256=G69Y9sXwpi8WUqXVLiwJ_R2dwNNMUKyEF0DF-3r6ElA,696
|
539
540
|
vellum/client/types/named_test_case_number_variable_value.py,sha256=5WWDFcwIZJEcX3ua3Ou3fI2KiRLLEs8-B7TP0FH6ni8,692
|
@@ -544,8 +545,8 @@ vellum/client/types/named_test_case_string_variable_value.py,sha256=CtoNBWDHfVnt
|
|
544
545
|
vellum/client/types/named_test_case_string_variable_value_request.py,sha256=99Dflz57ePdjo2vOsTnHEhd6_A_Viyq_jLZ2gCbpIhQ,697
|
545
546
|
vellum/client/types/named_test_case_variable_value.py,sha256=_kZoWpgTToCB4Cr7vJIlI4dAwsiQDbGeGXIixeEciZc,1632
|
546
547
|
vellum/client/types/named_test_case_variable_value_request.py,sha256=jDVzZ5VPFjzUyblcoDq9S-Lh2NN9yix3J2Ubv1TwmSw,1903
|
547
|
-
vellum/client/types/named_test_case_video_variable_value.py,sha256=
|
548
|
-
vellum/client/types/named_test_case_video_variable_value_request.py,sha256=
|
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
|
549
550
|
vellum/client/types/new_member_join_behavior_enum.py,sha256=s9Z_6JKM6R4gPNtIJYCe84_DNBHucj6dHOx6bdFPoLo,258
|
550
551
|
vellum/client/types/node_execution_fulfilled_body.py,sha256=foRkObll1ZBsh3Po6tHT6CKnDcUaMFEoQWc-rjLDn7A,849
|
551
552
|
vellum/client/types/node_execution_fulfilled_event.py,sha256=WRuXDamUa4FefGgRC6JAoDRrPlEf9AbC74EZxSH24E4,1897
|
@@ -699,12 +700,12 @@ vellum/client/types/sentence_chunker_config.py,sha256=WQGyc0jUiATYhQ7ezbBN06--ul
|
|
699
700
|
vellum/client/types/sentence_chunker_config_request.py,sha256=Da2ANuD4icLxI74emC4z2EEZjeY2k1w9HnEQt2g1AvI,680
|
700
701
|
vellum/client/types/sentence_chunking.py,sha256=MyEImiN0dhWEVFvD76Q6mCqIEjZcyY__Hhu0j9Gjs6Y,747
|
701
702
|
vellum/client/types/sentence_chunking_request.py,sha256=itrdqiKJJ7UKWVGTfj9sJu3kMSThkBF_Qj-3KqFunP4,776
|
702
|
-
vellum/client/types/slim_composio_tool_definition.py,sha256=
|
703
|
+
vellum/client/types/slim_composio_tool_definition.py,sha256=1wQRXqS4-DVq0JO8F7L2Vcnng1eSBLO1Z25tzAt_t28,733
|
703
704
|
vellum/client/types/slim_deployment_read.py,sha256=lEJ8Fx7QSmqjEK-LcR0y_hX2ywcaPbYjxINwPGy_ofw,1733
|
704
705
|
vellum/client/types/slim_document.py,sha256=aytvaz8SF6MSSEA3iLXP7ZgZOw33CA-_bv2iSj5cH24,2409
|
705
706
|
vellum/client/types/slim_document_document_to_document_index.py,sha256=Ogo8OFjtmcHjDmIynB9vckfjSZxFNhKM-cYpqSfREGI,1515
|
706
|
-
vellum/client/types/slim_integration_auth_config_read.py,sha256=
|
707
|
-
vellum/client/types/slim_integration_read.py,sha256=
|
707
|
+
vellum/client/types/slim_integration_auth_config_read.py,sha256=hfC4ABz7g1zc6A30TyyBA-W55TUZRzkFMf0iMjHgBSc,1113
|
708
|
+
vellum/client/types/slim_integration_read.py,sha256=hKc9a85Vi7WNIq6JDPABettHUz-vmV-ViXRsoIpD_MY,754
|
708
709
|
vellum/client/types/slim_release_review.py,sha256=vWNkPXk5wZ_scHsWHz_77PfMZRDn-4qUkqVbCKqY1zQ,747
|
709
710
|
vellum/client/types/slim_workflow_deployment.py,sha256=jIciGPCW9QNtDRdq3w_zUdrrE4cg1LWkcoyGM-L6cs0,2085
|
710
711
|
vellum/client/types/slim_workflow_execution_read.py,sha256=6Ep2iQ6tWTCGxzvAh4t3G_4BjHQ3_JZ9WFdc81XGqkA,2302
|
@@ -747,18 +748,18 @@ vellum/client/types/terminal_node_result_output.py,sha256=hOzkyk90PDY2ZGd0JSrlEh
|
|
747
748
|
vellum/client/types/terminal_node_search_results_result.py,sha256=jXRnFcB7aSpEP7ivEk1rCd0jtDP3pXOODEuEhCm_Lt4,847
|
748
749
|
vellum/client/types/terminal_node_string_result.py,sha256=Fj4v9vZI5gijB9xtrQ7u6ue7TgDmeA3ziW3yxuZbGUw,762
|
749
750
|
vellum/client/types/test_case_array_variable_value.py,sha256=_SLmKw4QDYnUjk1rtdJgXyQ0wrEHRXOSS7mmTFcjniM,974
|
750
|
-
vellum/client/types/test_case_audio_variable_value.py,sha256=
|
751
|
+
vellum/client/types/test_case_audio_variable_value.py,sha256=WrZvvEhlwcuGpDrkChBF4Atwprgrw9LQ7hXhvmCSbxQ,774
|
751
752
|
vellum/client/types/test_case_chat_history_variable_value.py,sha256=YDKIN6Kmk0iE_zjVZP60JK7gGkBTgqGtLPRjYuzmC1Q,789
|
752
|
-
vellum/client/types/test_case_document_variable_value.py,sha256=
|
753
|
+
vellum/client/types/test_case_document_variable_value.py,sha256=6OPaqWms55sia4fGkXKkVWLIXlcib-2nTzOxwg9CM_8,794
|
753
754
|
vellum/client/types/test_case_error_variable_value.py,sha256=XE0LthR-AFjn4gAYIGdjaB0EoRUNYxiU1KrnvWiGOGE,750
|
754
755
|
vellum/client/types/test_case_function_call_variable_value.py,sha256=8l3L_bt4MwmdoejHVgL25rPjqMI1AmPZTljyREXe9Fg,783
|
755
|
-
vellum/client/types/test_case_image_variable_value.py,sha256=
|
756
|
+
vellum/client/types/test_case_image_variable_value.py,sha256=3_2tTQBYQwOoEAe7Mcrx3meFr7WY4fSZ0ppl92xHQYA,774
|
756
757
|
vellum/client/types/test_case_json_variable_value.py,sha256=-wy1WvxTZcKSVFhrpdJ7GukQBmYOokxeIDxF798Epzw,706
|
757
758
|
vellum/client/types/test_case_number_variable_value.py,sha256=im2Ouf0e869f4SEZKah6564-UEKBmyu89DYvj1fg1io,712
|
758
759
|
vellum/client/types/test_case_search_results_variable_value.py,sha256=UDkPZPUbQ0ymfEsxrcBSfA9P3XvUf7hvs3ivREuBJ1w,800
|
759
760
|
vellum/client/types/test_case_string_variable_value.py,sha256=L6qt-PCBp6m6g8BZgiy8tePIHm58ThnxDbPEKkAnEKQ,707
|
760
761
|
vellum/client/types/test_case_variable_value.py,sha256=eIifSIZQtCI9x3CqX5Sojdvq97TFeFIzFtah3VmIRIU,1435
|
761
|
-
vellum/client/types/test_case_video_variable_value.py,sha256=
|
762
|
+
vellum/client/types/test_case_video_variable_value.py,sha256=b19K3fos6A7xG_djQ_vKad8GYlNtZmTKNlFdqDM_0MI,773
|
762
763
|
vellum/client/types/test_suite_run_deployment_release_tag_exec_config.py,sha256=Z8xAr72cdA_fA_WKenqCOTGnqB0kFXQyRPctYDc7eFE,1118
|
763
764
|
vellum/client/types/test_suite_run_deployment_release_tag_exec_config_data.py,sha256=CxtPXzIMLf4N__mSl0w8B9KHQH6yB0lPlNWkKWEGCWM,892
|
764
765
|
vellum/client/types/test_suite_run_deployment_release_tag_exec_config_data_request.py,sha256=Rlkjn7P6N2Ok8Zjt6qZiKJ3-ep3F9gSGAFhJOyIVY20,899
|
@@ -828,7 +829,7 @@ vellum/client/types/token_overlapping_window_chunker_config.py,sha256=DusQI1WCr7
|
|
828
829
|
vellum/client/types/token_overlapping_window_chunker_config_request.py,sha256=nxvP5rh8VbvE8AzOFXUBCyNoooDqRS7AmgwkwhCS9ZY,702
|
829
830
|
vellum/client/types/token_overlapping_window_chunking.py,sha256=waAqTJfw2hVCg6OhQ0FsprHJbvlOxTzjtvF8_ZdtPd0,853
|
830
831
|
vellum/client/types/token_overlapping_window_chunking_request.py,sha256=ez-hqu3q-TzqaHsPVvSZ3EY1mqoDeFGz1dnpeEwJByA,882
|
831
|
-
vellum/client/types/tool_definition_integration.py,sha256=
|
832
|
+
vellum/client/types/tool_definition_integration.py,sha256=7loJ81FWqtjK4nLuIkzWQH0JeY3VUx_rzKQEL_2tzAE,703
|
832
833
|
vellum/client/types/unit_enum.py,sha256=BKWRVp2WfHtGK4D6TsolhNJHGHfExzrRHkFn8H8QkwQ,113
|
833
834
|
vellum/client/types/upload_document_response.py,sha256=C-JP0uAraD8waVwCNRM4FRCRglmv78m532gpy2Q9_Oc,613
|
834
835
|
vellum/client/types/upsert_test_suite_test_case_request.py,sha256=VZGW1_Bw5cvU7RDg7MhT3A9C3ftyeYnAJaDMiil1FuQ,1978
|
@@ -1300,6 +1301,7 @@ vellum/types/initiated_prompt_execution_meta.py,sha256=1p5PTDKhyQWGfO02w5XuxsLEW
|
|
1300
1301
|
vellum/types/initiated_workflow_node_result_event.py,sha256=t2ZG_qAz7aHjm881EIOwzcm-Pub2Dyn4CrdNy2nXVsk,174
|
1301
1302
|
vellum/types/instructor_vectorizer_config.py,sha256=-ydrbzjBMhDkV198rN6rEJsxkViplv1xkTTWk6OxP68,166
|
1302
1303
|
vellum/types/instructor_vectorizer_config_request.py,sha256=WVughx2NMndzE7lyE8gph7M_LoaJdHet9IJUH8rUb0Y,174
|
1304
|
+
vellum/types/integration_auth_config_integration.py,sha256=5Eb2oaPbwwFnf05Rr5Q35KhVxw1X-P35g1TjhgOHGb8,173
|
1303
1305
|
vellum/types/integration_auth_config_integration_credential.py,sha256=yyz48hxOIF_tlKEgm8ryGsBOhHsQP9QH2-yitPZxcjU,184
|
1304
1306
|
vellum/types/integration_credential_access_type.py,sha256=nvvklDHyz-q6lsQJ0jlNYPe_f3LhOoOPmdzqQ6vnBls,172
|
1305
1307
|
vellum/types/integration_name.py,sha256=NrAy5QDLUhx4WnED40MTujnjAKzjGxd9lpCrMgC8YZs,154
|
@@ -1799,7 +1801,7 @@ vellum/workflows/emitters/vellum_emitter.py,sha256=t4ixrN0NNXrydMP9PVKYvcOMxoMqs
|
|
1799
1801
|
vellum/workflows/environment/__init__.py,sha256=TJz0m9dwIs6YOwCTeuN0HHsU-ecyjc1OJXx4AFy83EQ,121
|
1800
1802
|
vellum/workflows/environment/environment.py,sha256=Ck3RPKXJvtMGx_toqYQQQF-ZwXm5ijVwJpEPTeIJ4_Q,471
|
1801
1803
|
vellum/workflows/errors/__init__.py,sha256=tWGPu5xyAU8gRb8_bl0fL7OfU3wxQ9UH6qVwy4X4P_Q,113
|
1802
|
-
vellum/workflows/errors/types.py,sha256=
|
1804
|
+
vellum/workflows/errors/types.py,sha256=zz-cQ74xut08eejJ8SrHYaNuoohhBRG_kO1X7TGN-mU,4503
|
1803
1805
|
vellum/workflows/events/__init__.py,sha256=V4mh766fyA70WvHelm9kfVZGrUgEKcJ9tJt8EepfQYU,832
|
1804
1806
|
vellum/workflows/events/context.py,sha256=vCfMIPmz4j9Om36rRWa35A_JU_VccWWS52_mZkkqxak,3345
|
1805
1807
|
vellum/workflows/events/exception_handling.py,sha256=2okFtCzrOzaCP-HEwBPMvHn-evlyyE1zRkmIYjR__jQ,1975
|
@@ -1871,8 +1873,8 @@ vellum/workflows/integrations/composio_service.py,sha256=rSliaZtNiBcDSvDxz9k5i1K
|
|
1871
1873
|
vellum/workflows/integrations/mcp_service.py,sha256=9DYb8dg2_kgc1UOu830kxhaFlt9yTbhKPhK3L6kb1t4,9831
|
1872
1874
|
vellum/workflows/integrations/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1873
1875
|
vellum/workflows/integrations/tests/test_mcp_service.py,sha256=q_DYrDkIqI4sQBNgID4YdbM4e9tneLVWY8YmI4R26d8,8859
|
1874
|
-
vellum/workflows/integrations/tests/test_vellum_integration_service.py,sha256=
|
1875
|
-
vellum/workflows/integrations/vellum_integration_service.py,sha256=
|
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
|
1876
1878
|
vellum/workflows/logging.py,sha256=_a217XogktV4Ncz6xKFz7WfYmZAzkfVRVuC0rWob8ls,437
|
1877
1879
|
vellum/workflows/nodes/__init__.py,sha256=zymtc3_iW2rFmMR-sayTLuN6ZsAw8VnJweWPsjQk2-Q,1197
|
1878
1880
|
vellum/workflows/nodes/bases/__init__.py,sha256=cniHuz_RXdJ4TQgD8CBzoiKDiPxg62ErdVpCbWICX64,58
|
@@ -1976,7 +1978,7 @@ vellum/workflows/nodes/displayable/tool_calling_node/tests/__init__.py,sha256=47
|
|
1976
1978
|
vellum/workflows/nodes/displayable/tool_calling_node/tests/test_composio_service.py,sha256=in1fbEz5x1tx3uKv9YXdvOncsHucNL8Ro6Go7lBuuOQ,8962
|
1977
1979
|
vellum/workflows/nodes/displayable/tool_calling_node/tests/test_node.py,sha256=GZoeybB9uM7ai8sBLAtUMHrMVgh-WrJDWrKZci6feDs,11892
|
1978
1980
|
vellum/workflows/nodes/displayable/tool_calling_node/tests/test_utils.py,sha256=EmKFA-ELdTzlK0xMqWnuSZPoGNLYCwk6b0amTqirZo0,11305
|
1979
|
-
vellum/workflows/nodes/displayable/tool_calling_node/utils.py,sha256
|
1981
|
+
vellum/workflows/nodes/displayable/tool_calling_node/utils.py,sha256=-6Qb8GuHlpYaOLlQcJSNYmRlZXEcnYzaCjIvH-scfMY,23657
|
1980
1982
|
vellum/workflows/nodes/displayable/web_search_node/__init__.py,sha256=8FOnEP-n-U68cvxTlJW9wphIAGHq5aqjzLM-DoSSXnU,61
|
1981
1983
|
vellum/workflows/nodes/displayable/web_search_node/node.py,sha256=NQYux2bOtuBF5E4tn-fXi5y3btURPRrNqMSM9MAZYI4,5091
|
1982
1984
|
vellum/workflows/nodes/displayable/web_search_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1994,7 +1996,8 @@ vellum/workflows/outputs/__init__.py,sha256=AyZ4pRh_ACQIGvkf0byJO46EDnSix1ZCAXfv
|
|
1994
1996
|
vellum/workflows/outputs/base.py,sha256=zy02zr9DmG3j7Xp3Q8xiOiXFF_c7uNh76jf2LiMS-qE,10132
|
1995
1997
|
vellum/workflows/ports/__init__.py,sha256=bZuMt-R7z5bKwpu4uPW7LlJeePOQWmCcDSXe5frUY5g,101
|
1996
1998
|
vellum/workflows/ports/node_ports.py,sha256=SM9uLAaoaE1HwR-Uqwf2v5zZK5iFnphKs6mE5Ls7ldE,2877
|
1997
|
-
vellum/workflows/ports/port.py,sha256=
|
1999
|
+
vellum/workflows/ports/port.py,sha256=zaY02b-Fe0Mb16i7vLT2ouu5uMjept1nlhnqYdGDU-s,4111
|
2000
|
+
vellum/workflows/ports/tests/test_port.py,sha256=WEE83wct8C01Lq_asSbS0MfL5BLA2avsS0UqJMye4OU,1215
|
1998
2001
|
vellum/workflows/ports/utils.py,sha256=gD8iijX8D3tjx1Tj2FW8-QIubCphTqW_gqROt6w6MOM,3790
|
1999
2002
|
vellum/workflows/references/__init__.py,sha256=glHFC1VfXmcbNvH5VzFbkT03d8_D7MMcvEcsUBrzLIs,591
|
2000
2003
|
vellum/workflows/references/constant.py,sha256=6yUT4q1sMj1hkI_tzzQ9AYcmeeDYFUNCqUq_W2DN0S8,540
|
@@ -2032,15 +2035,15 @@ vellum/workflows/tests/test_undefined.py,sha256=zMCVliCXVNLrlC6hEGyOWDnQADJ2g83y
|
|
2032
2035
|
vellum/workflows/types/__init__.py,sha256=KxUTMBGzuRCfiMqzzsykOeVvrrkaZmTTo1a7SLu8gRM,68
|
2033
2036
|
vellum/workflows/types/code_execution_node_wrappers.py,sha256=fewX9bqF_4TZuK-gZYIn12s31-k03vHMGRpvFAPm11Y,3206
|
2034
2037
|
vellum/workflows/types/core.py,sha256=yKm3sE02ult969q80DTmawiwYqodVjcAW-zlaUIgIv4,1495
|
2035
|
-
vellum/workflows/types/definition.py,sha256=
|
2038
|
+
vellum/workflows/types/definition.py,sha256=PWJF1SAopdOZcLcxz1ZtGYOa0oH0-dxjFaa_tuGb6SI,7682
|
2036
2039
|
vellum/workflows/types/generics.py,sha256=8jptbEx1fnJV0Lhj0MpCJOT6yNiEWeTOYOwrEAb5CRU,1576
|
2037
2040
|
vellum/workflows/types/stack.py,sha256=h7NE0vXR7l9DevFBIzIAk1Zh59K-kECQtDTKOUunwMY,1314
|
2038
2041
|
vellum/workflows/types/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2039
|
-
vellum/workflows/types/tests/test_definition.py,sha256=
|
2042
|
+
vellum/workflows/types/tests/test_definition.py,sha256=QUI9_Wsm2k-ZxQTXogsB0L4csSvVFOvLXHb-asC6K2w,7193
|
2040
2043
|
vellum/workflows/types/tests/test_utils.py,sha256=UnZog59tR577mVwqZRqqWn2fScoOU1H6up0EzS8zYhw,2536
|
2041
2044
|
vellum/workflows/types/utils.py,sha256=mTctHITBybpt4855x32oCKALBEcMNLn-9cCmfEKgJHQ,6498
|
2042
2045
|
vellum/workflows/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2043
|
-
vellum/workflows/utils/functions.py,sha256=
|
2046
|
+
vellum/workflows/utils/functions.py,sha256=QbRoymgG_NgEvZcoyb_ofmP4o9fzuBlFRZ8s0Ivk11U,13062
|
2044
2047
|
vellum/workflows/utils/hmac.py,sha256=JJCczc6pyV6DuE1Oa0QVfYPUN_of3zEYmGFib3OZnrE,1135
|
2045
2048
|
vellum/workflows/utils/names.py,sha256=QtHquoaGqRseu5gg2OcVGI2d_CMcEOvjb9KspwH4C-A,552
|
2046
2049
|
vellum/workflows/utils/pydantic_schema.py,sha256=eR_bBtY-T0pttJP-ARwagSdCOnwPUtiT3cegm2lzDTQ,1310
|
@@ -2059,8 +2062,8 @@ vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnad
|
|
2059
2062
|
vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2060
2063
|
vellum/workflows/workflows/tests/test_base_workflow.py,sha256=Boa-_m9ii2Qsa1RvVM-VYniF7zCpzGgEGy-OnPZkrHg,23941
|
2061
2064
|
vellum/workflows/workflows/tests/test_context.py,sha256=VJBUcyWVtMa_lE5KxdhgMu0WYNYnUQUDvTF7qm89hJ0,2333
|
2062
|
-
vellum_ai-1.
|
2063
|
-
vellum_ai-1.
|
2064
|
-
vellum_ai-1.
|
2065
|
-
vellum_ai-1.
|
2066
|
-
vellum_ai-1.
|
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["
|
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"
|
File without changes
|
File without changes
|
File without changes
|