vellum-ai 0.0.20__py3-none-any.whl → 0.0.25__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 (84) hide show
  1. vellum/__init__.py +38 -20
  2. vellum/client.py +278 -101
  3. vellum/core/__init__.py +11 -2
  4. vellum/core/client_wrapper.py +27 -0
  5. vellum/core/remove_none_from_dict.py +11 -0
  6. vellum/resources/deployments/client.py +35 -15
  7. vellum/resources/document_indexes/client.py +64 -16
  8. vellum/resources/documents/client.py +110 -35
  9. vellum/resources/model_versions/client.py +67 -25
  10. vellum/resources/registered_prompts/client.py +80 -16
  11. vellum/resources/sandboxes/client.py +90 -25
  12. vellum/resources/test_suites/client.py +90 -25
  13. vellum/types/__init__.py +24 -4
  14. vellum/types/deployment_read.py +2 -6
  15. vellum/types/document.py +3 -7
  16. vellum/types/document_document_to_document_index.py +2 -2
  17. vellum/types/document_index_read.py +3 -7
  18. vellum/types/enriched_normalized_completion.py +5 -9
  19. vellum/types/evaluation_params.py +1 -3
  20. vellum/types/evaluation_params_request.py +1 -3
  21. vellum/types/execute_workflow_stream_error_response.py +24 -0
  22. vellum/types/generate_error_response.py +1 -1
  23. vellum/types/generate_request.py +3 -7
  24. vellum/types/generate_result.py +2 -6
  25. vellum/types/generate_result_data.py +1 -1
  26. vellum/types/generate_result_error.py +1 -1
  27. vellum/types/model_version_build_config.py +2 -6
  28. vellum/types/model_version_compile_prompt_response.py +1 -1
  29. vellum/types/model_version_compiled_prompt.py +2 -4
  30. vellum/types/model_version_exec_config.py +3 -3
  31. vellum/types/model_version_read.py +7 -10
  32. vellum/types/model_version_sandbox_snapshot.py +3 -5
  33. vellum/types/prompt_template_block_properties.py +1 -0
  34. vellum/types/prompt_template_block_properties_request.py +3 -2
  35. vellum/types/prompt_template_block_request.py +1 -1
  36. vellum/types/prompt_template_input_variable.py +1 -1
  37. vellum/types/prompt_template_input_variable_request.py +1 -1
  38. vellum/types/provider_enum.py +5 -0
  39. vellum/types/register_prompt_error_response.py +1 -1
  40. vellum/types/register_prompt_prompt.py +2 -2
  41. vellum/types/register_prompt_prompt_info_request.py +1 -1
  42. vellum/types/register_prompt_response.py +5 -7
  43. vellum/types/registered_prompt_deployment.py +3 -3
  44. vellum/types/registered_prompt_model_version.py +2 -2
  45. vellum/types/registered_prompt_sandbox.py +2 -2
  46. vellum/types/registered_prompt_sandbox_snapshot.py +1 -1
  47. vellum/types/sandbox_scenario.py +2 -2
  48. vellum/types/scenario_input_request.py +1 -1
  49. vellum/types/search_error_response.py +1 -1
  50. vellum/types/search_filters_request.py +1 -1
  51. vellum/types/search_request_options_request.py +4 -6
  52. vellum/types/search_response.py +1 -1
  53. vellum/types/search_result.py +3 -3
  54. vellum/types/search_result_merging_request.py +1 -1
  55. vellum/types/search_weights_request.py +2 -2
  56. vellum/types/slim_document.py +5 -9
  57. vellum/types/submit_completion_actual_request.py +5 -15
  58. vellum/types/terminal_node_chat_history_result.py +1 -1
  59. vellum/types/terminal_node_json_result.py +1 -1
  60. vellum/types/terminal_node_result_output.py +2 -4
  61. vellum/types/terminal_node_string_result.py +1 -1
  62. vellum/types/test_suite_test_case.py +4 -8
  63. vellum/types/upload_document_response.py +1 -1
  64. vellum/types/workflow_event_error.py +26 -0
  65. vellum/types/workflow_execution_event_error_code.py +31 -0
  66. vellum/types/workflow_node_result_data.py +7 -11
  67. vellum/types/workflow_node_result_event.py +4 -3
  68. vellum/types/{workflow_node_result_event_state_enum.py → workflow_node_result_event_state.py} +5 -5
  69. vellum/types/workflow_request_chat_history_input_request.py +1 -3
  70. vellum/types/workflow_request_input_request.py +2 -6
  71. vellum/types/workflow_request_json_input_request.py +1 -3
  72. vellum/types/workflow_request_string_input_request.py +1 -3
  73. vellum/types/workflow_result_event.py +6 -3
  74. vellum/types/workflow_result_event_output_data.py +40 -0
  75. vellum/types/workflow_result_event_output_data_chat_history.py +32 -0
  76. vellum/types/workflow_result_event_output_data_json.py +31 -0
  77. vellum/types/workflow_result_event_output_data_string.py +33 -0
  78. vellum/types/workflow_stream_event.py +1 -4
  79. {vellum_ai-0.0.20.dist-info → vellum_ai-0.0.25.dist-info}/METADATA +1 -1
  80. vellum_ai-0.0.25.dist-info/RECORD +149 -0
  81. vellum/core/remove_none_from_headers.py +0 -11
  82. vellum/types/workflow_result_event_state_enum.py +0 -31
  83. vellum_ai-0.0.20.dist-info/RECORD +0 -142
  84. {vellum_ai-0.0.20.dist-info → vellum_ai-0.0.25.dist-info}/WHEEL +0 -0
@@ -13,17 +13,15 @@ from .slim_document_status_enum import SlimDocumentStatusEnum
13
13
 
14
14
 
15
15
  class SlimDocument(pydantic.BaseModel):
16
- id: str = pydantic.Field(description=("Vellum-generated ID that uniquely identifies this document.\n"))
16
+ id: str = pydantic.Field(description="Vellum-generated ID that uniquely identifies this document.")
17
17
  external_id: typing.Optional[str] = pydantic.Field(
18
- description=("The external ID that was originally provided when uploading the document.\n")
18
+ description="The external ID that was originally provided when uploading the document."
19
19
  )
20
20
  last_uploaded_at: str = pydantic.Field(
21
- description=("A timestamp representing when this document was most recently uploaded.\n")
21
+ description="A timestamp representing when this document was most recently uploaded."
22
22
  )
23
23
  label: str = pydantic.Field(
24
- description=(
25
- 'Human-friendly name for this document. <span style="white-space: nowrap">`<= 1000 characters`</span> \n'
26
- )
24
+ description='Human-friendly name for this document. <span style="white-space: nowrap">`<= 1000 characters`</span> '
27
25
  )
28
26
  processing_state: typing.Optional[ProcessingStateEnum] = pydantic.Field(
29
27
  description=(
@@ -46,9 +44,7 @@ class SlimDocument(pydantic.BaseModel):
46
44
  description=("The document's current status.\n" "\n" "* `ACTIVE` - Active\n")
47
45
  )
48
46
  keywords: typing.Optional[typing.List[str]] = pydantic.Field(
49
- description=(
50
- "A list of keywords associated with this document. Originally provided when uploading the document.\n"
51
- )
47
+ description="A list of keywords associated with this document. Originally provided when uploading the document."
52
48
  )
53
49
  document_to_document_indexes: typing.List[DocumentDocumentToDocumentIndex]
54
50
 
@@ -10,27 +10,17 @@ from ..core.datetime_utils import serialize_datetime
10
10
 
11
11
  class SubmitCompletionActualRequest(pydantic.BaseModel):
12
12
  id: typing.Optional[str] = pydantic.Field(
13
- description=(
14
- "The Vellum-generated ID of a previously generated completion. Must provide either this or external_id.\n"
15
- )
13
+ description="The Vellum-generated ID of a previously generated completion. Must provide either this or external_id."
16
14
  )
17
15
  external_id: typing.Optional[str] = pydantic.Field(
18
- description=(
19
- "The external ID that was originally provided when generating the completion that you'd now like to submit actuals for. Must provide either this or id.\n"
20
- )
21
- )
22
- text: typing.Optional[str] = pydantic.Field(
23
- description=("Text representing what the completion _should_ have been.\n")
16
+ description="The external ID that was originally provided when generating the completion that you'd now like to submit actuals for. Must provide either this or id."
24
17
  )
18
+ text: typing.Optional[str] = pydantic.Field(description="Text representing what the completion _should_ have been.")
25
19
  quality: typing.Optional[float] = pydantic.Field(
26
- description=(
27
- "A number between 0 and 1 representing the quality of the completion. 0 is the worst, 1 is the best.\n"
28
- )
20
+ description="A number between 0 and 1 representing the quality of the completion. 0 is the worst, 1 is the best."
29
21
  )
30
22
  timestamp: typing.Optional[str] = pydantic.Field(
31
- description=(
32
- "Optionally provide the timestamp representing when this feedback was collected. Used for reporting purposes.\n"
33
- )
23
+ description="Optionally provide the timestamp representing when this feedback was collected. Used for reporting purposes."
34
24
  )
35
25
 
36
26
  def json(self, **kwargs: typing.Any) -> str:
@@ -10,7 +10,7 @@ from .chat_message import ChatMessage
10
10
 
11
11
 
12
12
  class TerminalNodeChatHistoryResult(pydantic.BaseModel):
13
- name: str = pydantic.Field(description=("The unique name given to the terminal node that produced this output.\n"))
13
+ name: str = pydantic.Field(description="The unique name given to the terminal node that produced this output.")
14
14
  value: typing.List[ChatMessage]
15
15
 
16
16
  def json(self, **kwargs: typing.Any) -> str:
@@ -9,7 +9,7 @@ from ..core.datetime_utils import serialize_datetime
9
9
 
10
10
 
11
11
  class TerminalNodeJsonResult(pydantic.BaseModel):
12
- name: str = pydantic.Field(description=("The unique name given to the terminal node that produced this output.\n"))
12
+ name: str = pydantic.Field(description="The unique name given to the terminal node that produced this output.")
13
13
  value: typing.Dict[str, typing.Any]
14
14
 
15
15
  def json(self, **kwargs: typing.Any) -> str:
@@ -4,7 +4,6 @@ from __future__ import annotations
4
4
 
5
5
  import typing
6
6
 
7
- import pydantic
8
7
  import typing_extensions
9
8
 
10
9
  from .terminal_node_chat_history_result import TerminalNodeChatHistoryResult
@@ -36,7 +35,6 @@ class TerminalNodeResultOutput_ChatHistory(TerminalNodeChatHistoryResult):
36
35
  allow_population_by_field_name = True
37
36
 
38
37
 
39
- TerminalNodeResultOutput = typing_extensions.Annotated[
40
- typing.Union[TerminalNodeResultOutput_String, TerminalNodeResultOutput_Json, TerminalNodeResultOutput_ChatHistory],
41
- pydantic.Field(discriminator="type"),
38
+ TerminalNodeResultOutput = typing.Union[
39
+ TerminalNodeResultOutput_String, TerminalNodeResultOutput_Json, TerminalNodeResultOutput_ChatHistory
42
40
  ]
@@ -9,7 +9,7 @@ from ..core.datetime_utils import serialize_datetime
9
9
 
10
10
 
11
11
  class TerminalNodeStringResult(pydantic.BaseModel):
12
- name: str = pydantic.Field(description=("The unique name given to the terminal node that produced this output.\n"))
12
+ name: str = pydantic.Field(description="The unique name given to the terminal node that produced this output.")
13
13
  value: str
14
14
 
15
15
  def json(self, **kwargs: typing.Any) -> str:
@@ -11,18 +11,14 @@ from .evaluation_params import EvaluationParams
11
11
 
12
12
  class TestSuiteTestCase(pydantic.BaseModel):
13
13
  test_case_id: typing.Optional[str] = pydantic.Field(
14
- description=(
15
- "The id of the test case to update. If none is provided, an id will be generated and a new test case will be appended.\n"
16
- )
14
+ description="The id of the test case to update. If none is provided, an id will be generated and a new test case will be appended."
17
15
  )
18
- label: typing.Optional[str] = pydantic.Field(description=("A human-friendly label for the test case.\n"))
16
+ label: typing.Optional[str] = pydantic.Field(description="A human-friendly label for the test case.")
19
17
  input_values: typing.Dict[str, typing.Any] = pydantic.Field(
20
- description=("Key/value pairs for each input variable that the Test Suite expects.\n")
18
+ description="Key/value pairs for each input variable that the Test Suite expects."
21
19
  )
22
20
  evaluation_params: EvaluationParams = pydantic.Field(
23
- description=(
24
- "Parameters to use when evaluating the test case, specific to the test suite's evaluation metric.\n"
25
- )
21
+ description="Parameters to use when evaluating the test case, specific to the test suite's evaluation metric."
26
22
  )
27
23
 
28
24
  def json(self, **kwargs: typing.Any) -> str:
@@ -9,7 +9,7 @@ from ..core.datetime_utils import serialize_datetime
9
9
 
10
10
 
11
11
  class UploadDocumentResponse(pydantic.BaseModel):
12
- document_id: str = pydantic.Field(description=("The ID of the newly created document.\n"))
12
+ document_id: str = pydantic.Field(description="The ID of the newly created document.")
13
13
 
14
14
  def json(self, **kwargs: typing.Any) -> str:
15
15
  kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
@@ -0,0 +1,26 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+
6
+ import pydantic
7
+
8
+ from ..core.datetime_utils import serialize_datetime
9
+ from .workflow_execution_event_error_code import WorkflowExecutionEventErrorCode
10
+
11
+
12
+ class WorkflowEventError(pydantic.BaseModel):
13
+ message: str
14
+ code: WorkflowExecutionEventErrorCode
15
+
16
+ def json(self, **kwargs: typing.Any) -> str:
17
+ kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
18
+ return super().json(**kwargs_with_defaults)
19
+
20
+ def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
21
+ kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
22
+ return super().dict(**kwargs_with_defaults)
23
+
24
+ class Config:
25
+ frozen = True
26
+ json_encoders = {dt.datetime: serialize_datetime}
@@ -0,0 +1,31 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import enum
4
+ import typing
5
+
6
+ T_Result = typing.TypeVar("T_Result")
7
+
8
+
9
+ class WorkflowExecutionEventErrorCode(str, enum.Enum):
10
+ """
11
+ * `WORKFLOW_INITIALIZATION` - WORKFLOW_INITIALIZATION
12
+ * `NODE_EXECUTION` - NODE_EXECUTION
13
+ * `NODE_EXECUTION_COUNT_LIMIT_REACHED` - NODE_EXECUTION_COUNT_LIMIT_REACHED
14
+ """
15
+
16
+ WORKFLOW_INITIALIZATION = "WORKFLOW_INITIALIZATION"
17
+ NODE_EXECUTION = "NODE_EXECUTION"
18
+ NODE_EXECUTION_COUNT_LIMIT_REACHED = "NODE_EXECUTION_COUNT_LIMIT_REACHED"
19
+
20
+ def visit(
21
+ self,
22
+ workflow_initialization: typing.Callable[[], T_Result],
23
+ node_execution: typing.Callable[[], T_Result],
24
+ node_execution_count_limit_reached: typing.Callable[[], T_Result],
25
+ ) -> T_Result:
26
+ if self is WorkflowExecutionEventErrorCode.WORKFLOW_INITIALIZATION:
27
+ return workflow_initialization()
28
+ if self is WorkflowExecutionEventErrorCode.NODE_EXECUTION:
29
+ return node_execution()
30
+ if self is WorkflowExecutionEventErrorCode.NODE_EXECUTION_COUNT_LIMIT_REACHED:
31
+ return node_execution_count_limit_reached()
@@ -4,7 +4,6 @@ from __future__ import annotations
4
4
 
5
5
  import typing
6
6
 
7
- import pydantic
8
7
  import typing_extensions
9
8
 
10
9
  from .conditional_node_result import ConditionalNodeResult
@@ -63,14 +62,11 @@ class WorkflowNodeResultData_Terminal(TerminalNodeResult):
63
62
  allow_population_by_field_name = True
64
63
 
65
64
 
66
- WorkflowNodeResultData = typing_extensions.Annotated[
67
- typing.Union[
68
- WorkflowNodeResultData_Prompt,
69
- WorkflowNodeResultData_Sandbox,
70
- WorkflowNodeResultData_Deployment,
71
- WorkflowNodeResultData_Search,
72
- WorkflowNodeResultData_Conditional,
73
- WorkflowNodeResultData_Terminal,
74
- ],
75
- pydantic.Field(discriminator="type"),
65
+ WorkflowNodeResultData = typing.Union[
66
+ WorkflowNodeResultData_Prompt,
67
+ WorkflowNodeResultData_Sandbox,
68
+ WorkflowNodeResultData_Deployment,
69
+ WorkflowNodeResultData_Search,
70
+ WorkflowNodeResultData_Conditional,
71
+ WorkflowNodeResultData_Terminal,
76
72
  ]
@@ -6,18 +6,19 @@ import typing
6
6
  import pydantic
7
7
 
8
8
  from ..core.datetime_utils import serialize_datetime
9
+ from .workflow_event_error import WorkflowEventError
9
10
  from .workflow_node_result_data import WorkflowNodeResultData
10
- from .workflow_node_result_event_state_enum import WorkflowNodeResultEventStateEnum
11
+ from .workflow_node_result_event_state import WorkflowNodeResultEventState
11
12
 
12
13
 
13
14
  class WorkflowNodeResultEvent(pydantic.BaseModel):
14
15
  id: str
15
16
  node_id: str
16
17
  node_result_id: str
17
- state: WorkflowNodeResultEventStateEnum
18
+ state: WorkflowNodeResultEventState
18
19
  ts: typing.Optional[str]
19
20
  data: typing.Optional[WorkflowNodeResultData]
20
- error: typing.Optional[str]
21
+ error: typing.Optional[WorkflowEventError]
21
22
 
22
23
  def json(self, **kwargs: typing.Any) -> str:
23
24
  kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
@@ -6,7 +6,7 @@ import typing
6
6
  T_Result = typing.TypeVar("T_Result")
7
7
 
8
8
 
9
- class WorkflowNodeResultEventStateEnum(str, enum.Enum):
9
+ class WorkflowNodeResultEventState(str, enum.Enum):
10
10
  """
11
11
  * `INITIATED` - INITIATED
12
12
  * `STREAMING` - STREAMING
@@ -26,11 +26,11 @@ class WorkflowNodeResultEventStateEnum(str, enum.Enum):
26
26
  fulfilled: typing.Callable[[], T_Result],
27
27
  rejected: typing.Callable[[], T_Result],
28
28
  ) -> T_Result:
29
- if self is WorkflowNodeResultEventStateEnum.INITIATED:
29
+ if self is WorkflowNodeResultEventState.INITIATED:
30
30
  return initiated()
31
- if self is WorkflowNodeResultEventStateEnum.STREAMING:
31
+ if self is WorkflowNodeResultEventState.STREAMING:
32
32
  return streaming()
33
- if self is WorkflowNodeResultEventStateEnum.FULFILLED:
33
+ if self is WorkflowNodeResultEventState.FULFILLED:
34
34
  return fulfilled()
35
- if self is WorkflowNodeResultEventStateEnum.REJECTED:
35
+ if self is WorkflowNodeResultEventState.REJECTED:
36
36
  return rejected()
@@ -11,9 +11,7 @@ from .chat_message_request import ChatMessageRequest
11
11
 
12
12
  class WorkflowRequestChatHistoryInputRequest(pydantic.BaseModel):
13
13
  name: str = pydantic.Field(
14
- description=(
15
- 'The variable\'s name, as defined in the Workflow. <span style="white-space: nowrap">`non-empty`</span> \n'
16
- )
14
+ description='The variable\'s name, as defined in the Workflow. <span style="white-space: nowrap">`non-empty`</span> '
17
15
  )
18
16
  value: typing.List[ChatMessageRequest]
19
17
 
@@ -4,7 +4,6 @@ from __future__ import annotations
4
4
 
5
5
  import typing
6
6
 
7
- import pydantic
8
7
  import typing_extensions
9
8
 
10
9
  from .workflow_request_chat_history_input_request import WorkflowRequestChatHistoryInputRequest
@@ -36,9 +35,6 @@ class WorkflowRequestInputRequest_ChatHistory(WorkflowRequestChatHistoryInputReq
36
35
  allow_population_by_field_name = True
37
36
 
38
37
 
39
- WorkflowRequestInputRequest = typing_extensions.Annotated[
40
- typing.Union[
41
- WorkflowRequestInputRequest_String, WorkflowRequestInputRequest_Json, WorkflowRequestInputRequest_ChatHistory
42
- ],
43
- pydantic.Field(discriminator="type"),
38
+ WorkflowRequestInputRequest = typing.Union[
39
+ WorkflowRequestInputRequest_String, WorkflowRequestInputRequest_Json, WorkflowRequestInputRequest_ChatHistory
44
40
  ]
@@ -10,9 +10,7 @@ from ..core.datetime_utils import serialize_datetime
10
10
 
11
11
  class WorkflowRequestJsonInputRequest(pydantic.BaseModel):
12
12
  name: str = pydantic.Field(
13
- description=(
14
- 'The variable\'s name, as defined in the Workflow. <span style="white-space: nowrap">`non-empty`</span> \n'
15
- )
13
+ description='The variable\'s name, as defined in the Workflow. <span style="white-space: nowrap">`non-empty`</span> '
16
14
  )
17
15
  value: typing.Dict[str, typing.Any]
18
16
 
@@ -10,9 +10,7 @@ from ..core.datetime_utils import serialize_datetime
10
10
 
11
11
  class WorkflowRequestStringInputRequest(pydantic.BaseModel):
12
12
  name: str = pydantic.Field(
13
- description=(
14
- 'The variable\'s name, as defined in the Workflow. <span style="white-space: nowrap">`non-empty`</span> \n'
15
- )
13
+ description='The variable\'s name, as defined in the Workflow. <span style="white-space: nowrap">`non-empty`</span> '
16
14
  )
17
15
  value: str
18
16
 
@@ -6,14 +6,17 @@ import typing
6
6
  import pydantic
7
7
 
8
8
  from ..core.datetime_utils import serialize_datetime
9
- from .workflow_result_event_state_enum import WorkflowResultEventStateEnum
9
+ from .workflow_event_error import WorkflowEventError
10
+ from .workflow_node_result_event_state import WorkflowNodeResultEventState
11
+ from .workflow_result_event_output_data import WorkflowResultEventOutputData
10
12
 
11
13
 
12
14
  class WorkflowResultEvent(pydantic.BaseModel):
13
15
  id: str
14
- state: WorkflowResultEventStateEnum
16
+ state: WorkflowNodeResultEventState
15
17
  ts: str
16
- error: typing.Optional[str]
18
+ output: typing.Optional[WorkflowResultEventOutputData]
19
+ error: typing.Optional[WorkflowEventError]
17
20
 
18
21
  def json(self, **kwargs: typing.Any) -> str:
19
22
  kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
@@ -0,0 +1,40 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from __future__ import annotations
4
+
5
+ import typing
6
+
7
+ import typing_extensions
8
+
9
+ from .workflow_result_event_output_data_chat_history import WorkflowResultEventOutputDataChatHistory
10
+ from .workflow_result_event_output_data_json import WorkflowResultEventOutputDataJson
11
+ from .workflow_result_event_output_data_string import WorkflowResultEventOutputDataString
12
+
13
+
14
+ class WorkflowResultEventOutputData_String(WorkflowResultEventOutputDataString):
15
+ type: typing_extensions.Literal["STRING"]
16
+
17
+ class Config:
18
+ frozen = True
19
+ allow_population_by_field_name = True
20
+
21
+
22
+ class WorkflowResultEventOutputData_Json(WorkflowResultEventOutputDataJson):
23
+ type: typing_extensions.Literal["JSON"]
24
+
25
+ class Config:
26
+ frozen = True
27
+ allow_population_by_field_name = True
28
+
29
+
30
+ class WorkflowResultEventOutputData_ChatHistory(WorkflowResultEventOutputDataChatHistory):
31
+ type: typing_extensions.Literal["CHAT_HISTORY"]
32
+
33
+ class Config:
34
+ frozen = True
35
+ allow_population_by_field_name = True
36
+
37
+
38
+ WorkflowResultEventOutputData = typing.Union[
39
+ WorkflowResultEventOutputData_String, WorkflowResultEventOutputData_Json, WorkflowResultEventOutputData_ChatHistory
40
+ ]
@@ -0,0 +1,32 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+
6
+ import pydantic
7
+
8
+ from ..core.datetime_utils import serialize_datetime
9
+ from .chat_message import ChatMessage
10
+ from .workflow_node_result_event_state import WorkflowNodeResultEventState
11
+
12
+
13
+ class WorkflowResultEventOutputDataChatHistory(pydantic.BaseModel):
14
+ name: str
15
+ state: WorkflowNodeResultEventState
16
+ node_id: str
17
+ delta: typing.Optional[str] = pydantic.Field(
18
+ description="The newly output string value. Only relevant for string outputs with a state of STREAMING."
19
+ )
20
+ value: typing.Optional[typing.List[ChatMessage]]
21
+
22
+ def json(self, **kwargs: typing.Any) -> str:
23
+ kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
24
+ return super().json(**kwargs_with_defaults)
25
+
26
+ def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
27
+ kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
28
+ return super().dict(**kwargs_with_defaults)
29
+
30
+ class Config:
31
+ frozen = True
32
+ json_encoders = {dt.datetime: serialize_datetime}
@@ -0,0 +1,31 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+
6
+ import pydantic
7
+
8
+ from ..core.datetime_utils import serialize_datetime
9
+ from .workflow_node_result_event_state import WorkflowNodeResultEventState
10
+
11
+
12
+ class WorkflowResultEventOutputDataJson(pydantic.BaseModel):
13
+ name: str
14
+ state: WorkflowNodeResultEventState
15
+ node_id: str
16
+ delta: typing.Optional[str] = pydantic.Field(
17
+ description="The newly output string value. Only relevant for string outputs with a state of STREAMING."
18
+ )
19
+ value: typing.Optional[typing.Dict[str, typing.Any]]
20
+
21
+ def json(self, **kwargs: typing.Any) -> str:
22
+ kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
23
+ return super().json(**kwargs_with_defaults)
24
+
25
+ def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
26
+ kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
27
+ return super().dict(**kwargs_with_defaults)
28
+
29
+ class Config:
30
+ frozen = True
31
+ json_encoders = {dt.datetime: serialize_datetime}
@@ -0,0 +1,33 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+
6
+ import pydantic
7
+
8
+ from ..core.datetime_utils import serialize_datetime
9
+ from .workflow_node_result_event_state import WorkflowNodeResultEventState
10
+
11
+
12
+ class WorkflowResultEventOutputDataString(pydantic.BaseModel):
13
+ name: str
14
+ state: WorkflowNodeResultEventState
15
+ node_id: str
16
+ delta: typing.Optional[str] = pydantic.Field(
17
+ description="The newly output string value, meant to be concatenated with all previous. Will be non-null for events of state STREAMING."
18
+ )
19
+ value: typing.Optional[str] = pydantic.Field(
20
+ description="The entire string value. Will be non-null for events of state FULFILLED."
21
+ )
22
+
23
+ def json(self, **kwargs: typing.Any) -> str:
24
+ kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
25
+ return super().json(**kwargs_with_defaults)
26
+
27
+ def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
28
+ kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
29
+ return super().dict(**kwargs_with_defaults)
30
+
31
+ class Config:
32
+ frozen = True
33
+ json_encoders = {dt.datetime: serialize_datetime}
@@ -4,7 +4,6 @@ from __future__ import annotations
4
4
 
5
5
  import typing
6
6
 
7
- import pydantic
8
7
  import typing_extensions
9
8
 
10
9
  from .workflow_execution_node_result_event import WorkflowExecutionNodeResultEvent
@@ -27,6 +26,4 @@ class WorkflowStreamEvent_Node(WorkflowExecutionNodeResultEvent):
27
26
  allow_population_by_field_name = True
28
27
 
29
28
 
30
- WorkflowStreamEvent = typing_extensions.Annotated[
31
- typing.Union[WorkflowStreamEvent_Workflow, WorkflowStreamEvent_Node], pydantic.Field(discriminator="type")
32
- ]
29
+ WorkflowStreamEvent = typing.Union[WorkflowStreamEvent_Workflow, WorkflowStreamEvent_Node]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vellum-ai
3
- Version: 0.0.20
3
+ Version: 0.0.25
4
4
  Summary:
5
5
  Requires-Python: >=3.7,<4.0
6
6
  Classifier: Programming Language :: Python :: 3