vellum-ai 0.11.0__py3-none-any.whl → 0.11.1__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. vellum/__init__.py +16 -0
  2. vellum/client/core/client_wrapper.py +1 -1
  3. vellum/client/types/__init__.py +28 -0
  4. vellum/client/types/test_suite_run_exec_config.py +7 -1
  5. vellum/client/types/test_suite_run_exec_config_request.py +8 -0
  6. vellum/client/types/test_suite_run_prompt_sandbox_history_item_exec_config.py +31 -0
  7. vellum/client/types/test_suite_run_prompt_sandbox_history_item_exec_config_data.py +27 -0
  8. vellum/client/types/test_suite_run_prompt_sandbox_history_item_exec_config_data_request.py +27 -0
  9. vellum/client/types/test_suite_run_prompt_sandbox_history_item_exec_config_request.py +31 -0
  10. vellum/client/types/test_suite_run_workflow_sandbox_history_item_exec_config.py +31 -0
  11. vellum/client/types/test_suite_run_workflow_sandbox_history_item_exec_config_data.py +27 -0
  12. vellum/client/types/test_suite_run_workflow_sandbox_history_item_exec_config_data_request.py +27 -0
  13. vellum/client/types/test_suite_run_workflow_sandbox_history_item_exec_config_request.py +31 -0
  14. vellum/types/test_suite_run_prompt_sandbox_history_item_exec_config.py +3 -0
  15. vellum/types/test_suite_run_prompt_sandbox_history_item_exec_config_data.py +3 -0
  16. vellum/types/test_suite_run_prompt_sandbox_history_item_exec_config_data_request.py +3 -0
  17. vellum/types/test_suite_run_prompt_sandbox_history_item_exec_config_request.py +3 -0
  18. vellum/types/test_suite_run_workflow_sandbox_history_item_exec_config.py +3 -0
  19. vellum/types/test_suite_run_workflow_sandbox_history_item_exec_config_data.py +3 -0
  20. vellum/types/test_suite_run_workflow_sandbox_history_item_exec_config_data_request.py +3 -0
  21. vellum/types/test_suite_run_workflow_sandbox_history_item_exec_config_request.py +3 -0
  22. vellum/workflows/context.py +42 -0
  23. vellum/workflows/nodes/core/inline_subworkflow_node/node.py +13 -7
  24. vellum/workflows/nodes/displayable/api_node/node.py +3 -2
  25. vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +9 -0
  26. vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py +10 -1
  27. vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py +10 -1
  28. vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py +1 -1
  29. vellum/workflows/runner/runner.py +74 -70
  30. vellum/workflows/workflows/event_filters.py +4 -1
  31. {vellum_ai-0.11.0.dist-info → vellum_ai-0.11.1.dist-info}/METADATA +1 -1
  32. {vellum_ai-0.11.0.dist-info → vellum_ai-0.11.1.dist-info}/RECORD +43 -26
  33. vellum_cli/pull.py +3 -1
  34. vellum_cli/tests/test_pull.py +18 -0
  35. vellum_ee/workflows/display/base.py +1 -0
  36. vellum_ee/workflows/display/nodes/vellum/api_node.py +53 -54
  37. vellum_ee/workflows/display/nodes/vellum/utils.py +26 -6
  38. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py +29 -1
  39. vellum_ee/workflows/display/vellum.py +1 -1
  40. vellum_ee/workflows/display/workflows/vellum_workflow_display.py +10 -7
  41. {vellum_ai-0.11.0.dist-info → vellum_ai-0.11.1.dist-info}/LICENSE +0 -0
  42. {vellum_ai-0.11.0.dist-info → vellum_ai-0.11.1.dist-info}/WHEEL +0 -0
  43. {vellum_ai-0.11.0.dist-info → vellum_ai-0.11.1.dist-info}/entry_points.txt +0 -0
vellum/__init__.py CHANGED
@@ -393,6 +393,10 @@ from .types import (
393
393
  TestSuiteRunMetricNumberOutput,
394
394
  TestSuiteRunMetricOutput,
395
395
  TestSuiteRunMetricStringOutput,
396
+ TestSuiteRunPromptSandboxHistoryItemExecConfig,
397
+ TestSuiteRunPromptSandboxHistoryItemExecConfigData,
398
+ TestSuiteRunPromptSandboxHistoryItemExecConfigDataRequest,
399
+ TestSuiteRunPromptSandboxHistoryItemExecConfigRequest,
396
400
  TestSuiteRunRead,
397
401
  TestSuiteRunState,
398
402
  TestSuiteRunTestSuite,
@@ -400,6 +404,10 @@ from .types import (
400
404
  TestSuiteRunWorkflowReleaseTagExecConfigData,
401
405
  TestSuiteRunWorkflowReleaseTagExecConfigDataRequest,
402
406
  TestSuiteRunWorkflowReleaseTagExecConfigRequest,
407
+ TestSuiteRunWorkflowSandboxHistoryItemExecConfig,
408
+ TestSuiteRunWorkflowSandboxHistoryItemExecConfigData,
409
+ TestSuiteRunWorkflowSandboxHistoryItemExecConfigDataRequest,
410
+ TestSuiteRunWorkflowSandboxHistoryItemExecConfigRequest,
403
411
  TestSuiteTestCase,
404
412
  TestSuiteTestCaseBulkOperationRequest,
405
413
  TestSuiteTestCaseBulkResult,
@@ -917,6 +925,10 @@ __all__ = [
917
925
  "TestSuiteRunMetricNumberOutput",
918
926
  "TestSuiteRunMetricOutput",
919
927
  "TestSuiteRunMetricStringOutput",
928
+ "TestSuiteRunPromptSandboxHistoryItemExecConfig",
929
+ "TestSuiteRunPromptSandboxHistoryItemExecConfigData",
930
+ "TestSuiteRunPromptSandboxHistoryItemExecConfigDataRequest",
931
+ "TestSuiteRunPromptSandboxHistoryItemExecConfigRequest",
920
932
  "TestSuiteRunRead",
921
933
  "TestSuiteRunState",
922
934
  "TestSuiteRunTestSuite",
@@ -924,6 +936,10 @@ __all__ = [
924
936
  "TestSuiteRunWorkflowReleaseTagExecConfigData",
925
937
  "TestSuiteRunWorkflowReleaseTagExecConfigDataRequest",
926
938
  "TestSuiteRunWorkflowReleaseTagExecConfigRequest",
939
+ "TestSuiteRunWorkflowSandboxHistoryItemExecConfig",
940
+ "TestSuiteRunWorkflowSandboxHistoryItemExecConfigData",
941
+ "TestSuiteRunWorkflowSandboxHistoryItemExecConfigDataRequest",
942
+ "TestSuiteRunWorkflowSandboxHistoryItemExecConfigRequest",
927
943
  "TestSuiteTestCase",
928
944
  "TestSuiteTestCaseBulkOperationRequest",
929
945
  "TestSuiteTestCaseBulkResult",
@@ -17,7 +17,7 @@ class BaseClientWrapper:
17
17
  headers: typing.Dict[str, str] = {
18
18
  "X-Fern-Language": "Python",
19
19
  "X-Fern-SDK-Name": "vellum-ai",
20
- "X-Fern-SDK-Version": "0.11.0",
20
+ "X-Fern-SDK-Version": "0.11.1",
21
21
  }
22
22
  headers["X_API_KEY"] = self.api_key
23
23
  return headers
@@ -406,6 +406,16 @@ from .test_suite_run_metric_json_output import TestSuiteRunMetricJsonOutput
406
406
  from .test_suite_run_metric_number_output import TestSuiteRunMetricNumberOutput
407
407
  from .test_suite_run_metric_output import TestSuiteRunMetricOutput
408
408
  from .test_suite_run_metric_string_output import TestSuiteRunMetricStringOutput
409
+ from .test_suite_run_prompt_sandbox_history_item_exec_config import TestSuiteRunPromptSandboxHistoryItemExecConfig
410
+ from .test_suite_run_prompt_sandbox_history_item_exec_config_data import (
411
+ TestSuiteRunPromptSandboxHistoryItemExecConfigData,
412
+ )
413
+ from .test_suite_run_prompt_sandbox_history_item_exec_config_data_request import (
414
+ TestSuiteRunPromptSandboxHistoryItemExecConfigDataRequest,
415
+ )
416
+ from .test_suite_run_prompt_sandbox_history_item_exec_config_request import (
417
+ TestSuiteRunPromptSandboxHistoryItemExecConfigRequest,
418
+ )
409
419
  from .test_suite_run_read import TestSuiteRunRead
410
420
  from .test_suite_run_state import TestSuiteRunState
411
421
  from .test_suite_run_test_suite import TestSuiteRunTestSuite
@@ -415,6 +425,16 @@ from .test_suite_run_workflow_release_tag_exec_config_data_request import (
415
425
  TestSuiteRunWorkflowReleaseTagExecConfigDataRequest,
416
426
  )
417
427
  from .test_suite_run_workflow_release_tag_exec_config_request import TestSuiteRunWorkflowReleaseTagExecConfigRequest
428
+ from .test_suite_run_workflow_sandbox_history_item_exec_config import TestSuiteRunWorkflowSandboxHistoryItemExecConfig
429
+ from .test_suite_run_workflow_sandbox_history_item_exec_config_data import (
430
+ TestSuiteRunWorkflowSandboxHistoryItemExecConfigData,
431
+ )
432
+ from .test_suite_run_workflow_sandbox_history_item_exec_config_data_request import (
433
+ TestSuiteRunWorkflowSandboxHistoryItemExecConfigDataRequest,
434
+ )
435
+ from .test_suite_run_workflow_sandbox_history_item_exec_config_request import (
436
+ TestSuiteRunWorkflowSandboxHistoryItemExecConfigRequest,
437
+ )
418
438
  from .test_suite_test_case import TestSuiteTestCase
419
439
  from .test_suite_test_case_bulk_operation_request import TestSuiteTestCaseBulkOperationRequest
420
440
  from .test_suite_test_case_bulk_result import TestSuiteTestCaseBulkResult
@@ -893,6 +913,10 @@ __all__ = [
893
913
  "TestSuiteRunMetricNumberOutput",
894
914
  "TestSuiteRunMetricOutput",
895
915
  "TestSuiteRunMetricStringOutput",
916
+ "TestSuiteRunPromptSandboxHistoryItemExecConfig",
917
+ "TestSuiteRunPromptSandboxHistoryItemExecConfigData",
918
+ "TestSuiteRunPromptSandboxHistoryItemExecConfigDataRequest",
919
+ "TestSuiteRunPromptSandboxHistoryItemExecConfigRequest",
896
920
  "TestSuiteRunRead",
897
921
  "TestSuiteRunState",
898
922
  "TestSuiteRunTestSuite",
@@ -900,6 +924,10 @@ __all__ = [
900
924
  "TestSuiteRunWorkflowReleaseTagExecConfigData",
901
925
  "TestSuiteRunWorkflowReleaseTagExecConfigDataRequest",
902
926
  "TestSuiteRunWorkflowReleaseTagExecConfigRequest",
927
+ "TestSuiteRunWorkflowSandboxHistoryItemExecConfig",
928
+ "TestSuiteRunWorkflowSandboxHistoryItemExecConfigData",
929
+ "TestSuiteRunWorkflowSandboxHistoryItemExecConfigDataRequest",
930
+ "TestSuiteRunWorkflowSandboxHistoryItemExecConfigRequest",
903
931
  "TestSuiteTestCase",
904
932
  "TestSuiteTestCaseBulkOperationRequest",
905
933
  "TestSuiteTestCaseBulkResult",
@@ -2,9 +2,15 @@
2
2
 
3
3
  import typing
4
4
  from .test_suite_run_deployment_release_tag_exec_config import TestSuiteRunDeploymentReleaseTagExecConfig
5
+ from .test_suite_run_prompt_sandbox_history_item_exec_config import TestSuiteRunPromptSandboxHistoryItemExecConfig
5
6
  from .test_suite_run_workflow_release_tag_exec_config import TestSuiteRunWorkflowReleaseTagExecConfig
7
+ from .test_suite_run_workflow_sandbox_history_item_exec_config import TestSuiteRunWorkflowSandboxHistoryItemExecConfig
6
8
  from .test_suite_run_external_exec_config import TestSuiteRunExternalExecConfig
7
9
 
8
10
  TestSuiteRunExecConfig = typing.Union[
9
- TestSuiteRunDeploymentReleaseTagExecConfig, TestSuiteRunWorkflowReleaseTagExecConfig, TestSuiteRunExternalExecConfig
11
+ TestSuiteRunDeploymentReleaseTagExecConfig,
12
+ TestSuiteRunPromptSandboxHistoryItemExecConfig,
13
+ TestSuiteRunWorkflowReleaseTagExecConfig,
14
+ TestSuiteRunWorkflowSandboxHistoryItemExecConfig,
15
+ TestSuiteRunExternalExecConfig,
10
16
  ]
@@ -2,11 +2,19 @@
2
2
 
3
3
  import typing
4
4
  from .test_suite_run_deployment_release_tag_exec_config_request import TestSuiteRunDeploymentReleaseTagExecConfigRequest
5
+ from .test_suite_run_prompt_sandbox_history_item_exec_config_request import (
6
+ TestSuiteRunPromptSandboxHistoryItemExecConfigRequest,
7
+ )
5
8
  from .test_suite_run_workflow_release_tag_exec_config_request import TestSuiteRunWorkflowReleaseTagExecConfigRequest
9
+ from .test_suite_run_workflow_sandbox_history_item_exec_config_request import (
10
+ TestSuiteRunWorkflowSandboxHistoryItemExecConfigRequest,
11
+ )
6
12
  from .test_suite_run_external_exec_config_request import TestSuiteRunExternalExecConfigRequest
7
13
 
8
14
  TestSuiteRunExecConfigRequest = typing.Union[
9
15
  TestSuiteRunDeploymentReleaseTagExecConfigRequest,
16
+ TestSuiteRunPromptSandboxHistoryItemExecConfigRequest,
10
17
  TestSuiteRunWorkflowReleaseTagExecConfigRequest,
18
+ TestSuiteRunWorkflowSandboxHistoryItemExecConfigRequest,
11
19
  TestSuiteRunExternalExecConfigRequest,
12
20
  ]
@@ -0,0 +1,31 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.pydantic_utilities import UniversalBaseModel
4
+ import typing
5
+ from .test_suite_run_prompt_sandbox_history_item_exec_config_data import (
6
+ TestSuiteRunPromptSandboxHistoryItemExecConfigData,
7
+ )
8
+ import pydantic
9
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
10
+
11
+
12
+ class TestSuiteRunPromptSandboxHistoryItemExecConfig(UniversalBaseModel):
13
+ """
14
+ Execution configuration for running a Test Suite against a Prompt Sandbox History Item
15
+ """
16
+
17
+ type: typing.Literal["PROMPT_SANDBOX_HISTORY_ITEM"] = "PROMPT_SANDBOX_HISTORY_ITEM"
18
+ data: TestSuiteRunPromptSandboxHistoryItemExecConfigData
19
+ test_case_ids: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
20
+ """
21
+ Optionally specify a subset of test case ids to run. If not provided, all test cases within the test suite will be run by default.
22
+ """
23
+
24
+ if IS_PYDANTIC_V2:
25
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
26
+ else:
27
+
28
+ class Config:
29
+ frozen = True
30
+ smart_union = True
31
+ extra = pydantic.Extra.allow
@@ -0,0 +1,27 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.pydantic_utilities import UniversalBaseModel
4
+ import pydantic
5
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
6
+ import typing
7
+
8
+
9
+ class TestSuiteRunPromptSandboxHistoryItemExecConfigData(UniversalBaseModel):
10
+ history_item_id: str = pydantic.Field()
11
+ """
12
+ The ID of the Prompt Sandbox History Item that the Test Suite will run against.
13
+ """
14
+
15
+ prompt_variant_id: str = pydantic.Field()
16
+ """
17
+ The ID of the Prompt Variant within the Prompt Sandbox History Item that you'd like to run the Test Suite against.
18
+ """
19
+
20
+ if IS_PYDANTIC_V2:
21
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
22
+ else:
23
+
24
+ class Config:
25
+ frozen = True
26
+ smart_union = True
27
+ extra = pydantic.Extra.allow
@@ -0,0 +1,27 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.pydantic_utilities import UniversalBaseModel
4
+ import pydantic
5
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
6
+ import typing
7
+
8
+
9
+ class TestSuiteRunPromptSandboxHistoryItemExecConfigDataRequest(UniversalBaseModel):
10
+ history_item_id: str = pydantic.Field()
11
+ """
12
+ The ID of the Prompt Sandbox History Item that the Test Suite will run against.
13
+ """
14
+
15
+ prompt_variant_id: str = pydantic.Field()
16
+ """
17
+ The ID of the Prompt Variant within the Prompt Sandbox History Item that you'd like to run the Test Suite against.
18
+ """
19
+
20
+ if IS_PYDANTIC_V2:
21
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
22
+ else:
23
+
24
+ class Config:
25
+ frozen = True
26
+ smart_union = True
27
+ extra = pydantic.Extra.allow
@@ -0,0 +1,31 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.pydantic_utilities import UniversalBaseModel
4
+ import typing
5
+ from .test_suite_run_prompt_sandbox_history_item_exec_config_data_request import (
6
+ TestSuiteRunPromptSandboxHistoryItemExecConfigDataRequest,
7
+ )
8
+ import pydantic
9
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
10
+
11
+
12
+ class TestSuiteRunPromptSandboxHistoryItemExecConfigRequest(UniversalBaseModel):
13
+ """
14
+ Execution configuration for running a Test Suite against a Prompt Sandbox History Item
15
+ """
16
+
17
+ type: typing.Literal["PROMPT_SANDBOX_HISTORY_ITEM"] = "PROMPT_SANDBOX_HISTORY_ITEM"
18
+ data: TestSuiteRunPromptSandboxHistoryItemExecConfigDataRequest
19
+ test_case_ids: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
20
+ """
21
+ Optionally specify a subset of test case ids to run. If not provided, all test cases within the test suite will be run by default.
22
+ """
23
+
24
+ if IS_PYDANTIC_V2:
25
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
26
+ else:
27
+
28
+ class Config:
29
+ frozen = True
30
+ smart_union = True
31
+ extra = pydantic.Extra.allow
@@ -0,0 +1,31 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.pydantic_utilities import UniversalBaseModel
4
+ import typing
5
+ from .test_suite_run_workflow_sandbox_history_item_exec_config_data import (
6
+ TestSuiteRunWorkflowSandboxHistoryItemExecConfigData,
7
+ )
8
+ import pydantic
9
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
10
+
11
+
12
+ class TestSuiteRunWorkflowSandboxHistoryItemExecConfig(UniversalBaseModel):
13
+ """
14
+ Execution configuration for running a Test Suite against a Workflow Sandbox History Item
15
+ """
16
+
17
+ type: typing.Literal["WORKFLOW_SANDBOX_HISTORY_ITEM"] = "WORKFLOW_SANDBOX_HISTORY_ITEM"
18
+ data: TestSuiteRunWorkflowSandboxHistoryItemExecConfigData
19
+ test_case_ids: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
20
+ """
21
+ Optionally specify a subset of test case ids to run. If not provided, all test cases within the test suite will be run by default.
22
+ """
23
+
24
+ if IS_PYDANTIC_V2:
25
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
26
+ else:
27
+
28
+ class Config:
29
+ frozen = True
30
+ smart_union = True
31
+ extra = pydantic.Extra.allow
@@ -0,0 +1,27 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.pydantic_utilities import UniversalBaseModel
4
+ import pydantic
5
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
6
+ import typing
7
+
8
+
9
+ class TestSuiteRunWorkflowSandboxHistoryItemExecConfigData(UniversalBaseModel):
10
+ history_item_id: str = pydantic.Field()
11
+ """
12
+ The ID of the Workflow Sandbox History Item that the Test Suite will run against.
13
+ """
14
+
15
+ workflow_variant_id: str = pydantic.Field()
16
+ """
17
+ The ID of the Workflow Variant within the Workflow Sandbox History Item that you'd like to run the Test Suite against.
18
+ """
19
+
20
+ if IS_PYDANTIC_V2:
21
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
22
+ else:
23
+
24
+ class Config:
25
+ frozen = True
26
+ smart_union = True
27
+ extra = pydantic.Extra.allow
@@ -0,0 +1,27 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.pydantic_utilities import UniversalBaseModel
4
+ import pydantic
5
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
6
+ import typing
7
+
8
+
9
+ class TestSuiteRunWorkflowSandboxHistoryItemExecConfigDataRequest(UniversalBaseModel):
10
+ history_item_id: str = pydantic.Field()
11
+ """
12
+ The ID of the Workflow Sandbox History Item that the Test Suite will run against.
13
+ """
14
+
15
+ workflow_variant_id: str = pydantic.Field()
16
+ """
17
+ The ID of the Workflow Variant within the Workflow Sandbox History Item that you'd like to run the Test Suite against.
18
+ """
19
+
20
+ if IS_PYDANTIC_V2:
21
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
22
+ else:
23
+
24
+ class Config:
25
+ frozen = True
26
+ smart_union = True
27
+ extra = pydantic.Extra.allow
@@ -0,0 +1,31 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.pydantic_utilities import UniversalBaseModel
4
+ import typing
5
+ from .test_suite_run_workflow_sandbox_history_item_exec_config_data_request import (
6
+ TestSuiteRunWorkflowSandboxHistoryItemExecConfigDataRequest,
7
+ )
8
+ import pydantic
9
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
10
+
11
+
12
+ class TestSuiteRunWorkflowSandboxHistoryItemExecConfigRequest(UniversalBaseModel):
13
+ """
14
+ Execution configuration for running a Test Suite against a Workflow Sandbox History Item
15
+ """
16
+
17
+ type: typing.Literal["WORKFLOW_SANDBOX_HISTORY_ITEM"] = "WORKFLOW_SANDBOX_HISTORY_ITEM"
18
+ data: TestSuiteRunWorkflowSandboxHistoryItemExecConfigDataRequest
19
+ test_case_ids: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
20
+ """
21
+ Optionally specify a subset of test case ids to run. If not provided, all test cases within the test suite will be run by default.
22
+ """
23
+
24
+ if IS_PYDANTIC_V2:
25
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
26
+ else:
27
+
28
+ class Config:
29
+ frozen = True
30
+ smart_union = True
31
+ extra = pydantic.Extra.allow
@@ -0,0 +1,3 @@
1
+ # WARNING: This file will be removed in a future release. Please import from "vellum.client" instead.
2
+
3
+ from vellum.client.types.test_suite_run_prompt_sandbox_history_item_exec_config import *
@@ -0,0 +1,3 @@
1
+ # WARNING: This file will be removed in a future release. Please import from "vellum.client" instead.
2
+
3
+ from vellum.client.types.test_suite_run_prompt_sandbox_history_item_exec_config_data import *
@@ -0,0 +1,3 @@
1
+ # WARNING: This file will be removed in a future release. Please import from "vellum.client" instead.
2
+
3
+ from vellum.client.types.test_suite_run_prompt_sandbox_history_item_exec_config_data_request import *
@@ -0,0 +1,3 @@
1
+ # WARNING: This file will be removed in a future release. Please import from "vellum.client" instead.
2
+
3
+ from vellum.client.types.test_suite_run_prompt_sandbox_history_item_exec_config_request import *
@@ -0,0 +1,3 @@
1
+ # WARNING: This file will be removed in a future release. Please import from "vellum.client" instead.
2
+
3
+ from vellum.client.types.test_suite_run_workflow_sandbox_history_item_exec_config import *
@@ -0,0 +1,3 @@
1
+ # WARNING: This file will be removed in a future release. Please import from "vellum.client" instead.
2
+
3
+ from vellum.client.types.test_suite_run_workflow_sandbox_history_item_exec_config_data import *
@@ -0,0 +1,3 @@
1
+ # WARNING: This file will be removed in a future release. Please import from "vellum.client" instead.
2
+
3
+ from vellum.client.types.test_suite_run_workflow_sandbox_history_item_exec_config_data_request import *
@@ -0,0 +1,3 @@
1
+ # WARNING: This file will be removed in a future release. Please import from "vellum.client" instead.
2
+
3
+ from vellum.client.types.test_suite_run_workflow_sandbox_history_item_exec_config_request import *
@@ -0,0 +1,42 @@
1
+ from contextlib import contextmanager
2
+ import threading
3
+ from typing import Iterator, Optional, cast
4
+
5
+ from vellum.client.core import UniversalBaseModel
6
+ from vellum.workflows.events.types import ParentContext
7
+
8
+
9
+ class ExecutionContext(UniversalBaseModel):
10
+ parent_context: Optional[ParentContext] = None
11
+
12
+
13
+ _CONTEXT_KEY = "_execution_context"
14
+
15
+ local = threading.local()
16
+
17
+
18
+ def get_execution_context() -> ExecutionContext:
19
+ """Retrieve the current execution context."""
20
+ return getattr(local, _CONTEXT_KEY, ExecutionContext())
21
+
22
+
23
+ def set_execution_context(context: ExecutionContext) -> None:
24
+ """Set the current execution context."""
25
+ setattr(local, _CONTEXT_KEY, context)
26
+
27
+
28
+ def get_parent_context() -> ParentContext:
29
+ return cast(ParentContext, get_execution_context().parent_context)
30
+
31
+
32
+ @contextmanager
33
+ def execution_context(parent_context: Optional[ParentContext] = None) -> Iterator[None]:
34
+ """Context manager for handling execution context."""
35
+ prev_context = get_execution_context()
36
+ set_context = ExecutionContext(parent_context=parent_context) if parent_context else prev_context
37
+
38
+ try:
39
+ set_execution_context(set_context)
40
+ yield
41
+ finally:
42
+ set_execution_context(prev_context)
@@ -1,10 +1,12 @@
1
1
  from typing import TYPE_CHECKING, Generic, Iterator, Optional, Set, Type, TypeVar
2
2
 
3
+ from vellum.workflows.context import execution_context, get_parent_context
3
4
  from vellum.workflows.errors.types import VellumErrorCode
4
5
  from vellum.workflows.exceptions import NodeException
5
6
  from vellum.workflows.nodes.bases.base_subworkflow_node import BaseSubworkflowNode
6
7
  from vellum.workflows.outputs.base import BaseOutput, BaseOutputs
7
8
  from vellum.workflows.state.base import BaseState
9
+ from vellum.workflows.state.context import WorkflowContext
8
10
  from vellum.workflows.types.generics import StateType, WorkflowInputsType
9
11
 
10
12
  if TYPE_CHECKING:
@@ -24,18 +26,22 @@ class InlineSubworkflowNode(BaseSubworkflowNode[StateType], Generic[StateType, W
24
26
  subworkflow: Type["BaseWorkflow[WorkflowInputsType, InnerStateType]"]
25
27
 
26
28
  def run(self) -> Iterator[BaseOutput]:
27
- subworkflow = self.subworkflow(
28
- parent_state=self.state,
29
- context=self._context,
30
- )
31
- subworkflow_stream = subworkflow.stream(
32
- inputs=self._compile_subworkflow_inputs(),
33
- )
29
+ with execution_context(parent_context=get_parent_context() or self._context.parent_context):
30
+ subworkflow = self.subworkflow(
31
+ parent_state=self.state,
32
+ context=WorkflowContext(
33
+ _vellum_client=self._context._vellum_client,
34
+ ),
35
+ )
36
+ subworkflow_stream = subworkflow.stream(
37
+ inputs=self._compile_subworkflow_inputs(),
38
+ )
34
39
 
35
40
  outputs: Optional[BaseOutputs] = None
36
41
  fulfilled_output_names: Set[str] = set()
37
42
 
38
43
  for event in subworkflow_stream:
44
+ self._context._emit_subworkflow_event(event)
39
45
  if event.name == "workflow.execution.streaming":
40
46
  if event.output.is_fulfilled:
41
47
  fulfilled_output_names.add(event.output.name)
@@ -18,13 +18,14 @@ class APINode(BaseAPINode):
18
18
 
19
19
  authorization_type: Optional[AuthorizationType] = None - The type of authorization to use for the API call.
20
20
  api_key_header_key: Optional[str] = None - The header key to use for the API key authorization.
21
- bearer_token_value: Optional[str] = None - The bearer token value to use for the bearer token authorization.
21
+ bearer_token_value: Optional[Union[str, VellumSecretReference]] = None - The bearer token value to use
22
+ for the bearer token authorization.
22
23
  """
23
24
 
24
25
  authorization_type: Optional[AuthorizationType] = None
25
26
  api_key_header_key: Optional[str] = None
26
27
  api_key_header_value: Optional[Union[str, VellumSecretReference]] = None
27
- bearer_token_value: Optional[str] = None
28
+ bearer_token_value: Optional[Union[str, VellumSecretReference]] = None
28
29
 
29
30
  def run(self) -> BaseAPINode.Outputs:
30
31
  headers = self.headers or {}
@@ -14,7 +14,9 @@ from vellum import (
14
14
  PromptRequestStringInput,
15
15
  VellumVariable,
16
16
  )
17
+ from vellum.client import RequestOptions
17
18
  from vellum.workflows.constants import OMIT
19
+ from vellum.workflows.context import get_parent_context
18
20
  from vellum.workflows.errors import VellumErrorCode
19
21
  from vellum.workflows.exceptions import NodeException
20
22
  from vellum.workflows.nodes.displayable.bases.base_prompt_node import BasePromptNode
@@ -48,6 +50,13 @@ class BaseInlinePromptNode(BasePromptNode, Generic[StateType]):
48
50
 
49
51
  def _get_prompt_event_stream(self) -> Iterator[AdHocExecutePromptEvent]:
50
52
  input_variables, input_values = self._compile_prompt_inputs()
53
+ current_parent_context = get_parent_context()
54
+ parent_context = current_parent_context.model_dump_json() if current_parent_context else None
55
+ request_options = self.request_options or RequestOptions()
56
+ request_options["additional_body_parameters"] = {
57
+ "execution_context": {"parent_context": parent_context},
58
+ **request_options.get("additional_body_parameters", {}),
59
+ }
51
60
 
52
61
  return self._context.vellum_client.ad_hoc.adhoc_execute_prompt_stream(
53
62
  ml_model=self.ml_model,
@@ -11,7 +11,9 @@ from vellum import (
11
11
  RawPromptExecutionOverridesRequest,
12
12
  StringInputRequest,
13
13
  )
14
+ from vellum.client import RequestOptions
14
15
  from vellum.workflows.constants import LATEST_RELEASE_TAG, OMIT
16
+ from vellum.workflows.context import get_parent_context
15
17
  from vellum.workflows.errors import VellumErrorCode
16
18
  from vellum.workflows.exceptions import NodeException
17
19
  from vellum.workflows.nodes.displayable.bases.base_prompt_node import BasePromptNode
@@ -46,6 +48,13 @@ class BasePromptDeploymentNode(BasePromptNode, Generic[StateType]):
46
48
  metadata: Optional[Dict[str, Optional[Any]]] = OMIT
47
49
 
48
50
  def _get_prompt_event_stream(self) -> Iterator[ExecutePromptEvent]:
51
+ current_parent_context = get_parent_context()
52
+ parent_context = current_parent_context.model_dump() if current_parent_context else None
53
+ request_options = self.request_options or RequestOptions()
54
+ request_options["additional_body_parameters"] = {
55
+ "execution_context": {"parent_context": parent_context},
56
+ **request_options.get("additional_body_parameters", {}),
57
+ }
49
58
  return self._context.vellum_client.execute_prompt_stream(
50
59
  inputs=self._compile_prompt_inputs(),
51
60
  prompt_deployment_id=str(self.deployment) if isinstance(self.deployment, UUID) else None,
@@ -56,7 +65,7 @@ class BasePromptDeploymentNode(BasePromptNode, Generic[StateType]):
56
65
  raw_overrides=self.raw_overrides,
57
66
  expand_raw=self.expand_raw,
58
67
  metadata=self.metadata,
59
- request_options=self.request_options,
68
+ request_options=request_options,
60
69
  )
61
70
 
62
71
  def _compile_prompt_inputs(self) -> List[PromptDeploymentInputRequest]:
@@ -13,6 +13,7 @@ from vellum import (
13
13
  )
14
14
  from vellum.core import RequestOptions
15
15
  from vellum.workflows.constants import LATEST_RELEASE_TAG, OMIT
16
+ from vellum.workflows.context import get_parent_context
16
17
  from vellum.workflows.errors import VellumErrorCode
17
18
  from vellum.workflows.exceptions import NodeException
18
19
  from vellum.workflows.nodes.bases.base_subworkflow_node.node import BaseSubworkflowNode
@@ -89,6 +90,13 @@ class SubworkflowDeploymentNode(BaseSubworkflowNode[StateType], Generic[StateTyp
89
90
  return compiled_inputs
90
91
 
91
92
  def run(self) -> Iterator[BaseOutput]:
93
+ current_parent_context = get_parent_context()
94
+ parent_context = current_parent_context.model_dump(mode="json") if current_parent_context else None
95
+ request_options = self.request_options or RequestOptions()
96
+ request_options["additional_body_parameters"] = {
97
+ "execution_context": {"parent_context": parent_context},
98
+ **request_options.get("additional_body_parameters", {}),
99
+ }
92
100
  subworkflow_stream = self._context.vellum_client.execute_workflow_stream(
93
101
  inputs=self._compile_subworkflow_inputs(),
94
102
  workflow_deployment_id=str(self.deployment) if isinstance(self.deployment, UUID) else None,
@@ -97,8 +105,9 @@ class SubworkflowDeploymentNode(BaseSubworkflowNode[StateType], Generic[StateTyp
97
105
  external_id=self.external_id,
98
106
  event_types=["WORKFLOW"],
99
107
  metadata=self.metadata,
100
- request_options=self.request_options,
108
+ request_options=request_options,
101
109
  )
110
+ # for some reason execution context isn't showing as an option? ^ failing mypy
102
111
 
103
112
  outputs: Optional[List[WorkflowOutput]] = None
104
113
  fulfilled_output_names: Set[str] = set()
@@ -75,5 +75,5 @@ def test_text_prompt_deployment_node__basic(vellum_client):
75
75
  prompt_deployment_name="my-deployment",
76
76
  raw_overrides=OMIT,
77
77
  release_tag="LATEST",
78
- request_options=None,
78
+ request_options={"additional_body_parameters": {"execution_context": {"parent_context": None}}},
79
79
  )