diff --git a/api/core/variables/segments.py b/api/core/variables/segments.py index 03d4127052..aec9959dae 100644 --- a/api/core/variables/segments.py +++ b/api/core/variables/segments.py @@ -221,6 +221,22 @@ class VersionedMemoryValue(BaseModel): } ) +class VersionedMemorySegment(Segment): + value_type: SegmentType = SegmentType.VERSIONED_MEMORY + value: VersionedMemoryValue + + @property + def text(self) -> str: + return self.value.current_value + + @property + def log(self) -> str: + return self.value.current_value + + @property + def markdown(self) -> str: + return self.value.current_value + def get_segment_discriminator(v: Any) -> SegmentType | None: if isinstance(v, Segment): @@ -260,6 +276,7 @@ SegmentUnion: TypeAlias = Annotated[ | Annotated[ArrayNumberSegment, Tag(SegmentType.ARRAY_NUMBER)] | Annotated[ArrayObjectSegment, Tag(SegmentType.ARRAY_OBJECT)] | Annotated[ArrayFileSegment, Tag(SegmentType.ARRAY_FILE)] + | Annotated[VersionedMemorySegment, Tag(SegmentType.VERSIONED_MEMORY)] ), Discriminator(get_segment_discriminator), ] diff --git a/api/core/variables/types.py b/api/core/variables/types.py index 6629056042..bf8af67b54 100644 --- a/api/core/variables/types.py +++ b/api/core/variables/types.py @@ -34,6 +34,8 @@ class SegmentType(StrEnum): ARRAY_OBJECT = "array[object]" ARRAY_FILE = "array[file]" + VERSIONED_MEMORY = "versioned_memory" + NONE = "none" GROUP = "group" diff --git a/api/core/variables/variables.py b/api/core/variables/variables.py index a31ebc848e..6154431460 100644 --- a/api/core/variables/variables.py +++ b/api/core/variables/variables.py @@ -20,7 +20,7 @@ from .segments import ( ObjectSegment, Segment, StringSegment, - get_segment_discriminator, + get_segment_discriminator, VersionedMemorySegment, ) from .types import SegmentType @@ -99,6 +99,8 @@ class FileVariable(FileSegment, Variable): class ArrayFileVariable(ArrayFileSegment, ArrayVariable): pass +class VersionedMemoryVariable(VersionedMemorySegment, Variable): + pass # The `VariableUnion`` type is used to enable serialization and deserialization with Pydantic. # Use `Variable` for type hinting when serialization is not required. @@ -120,6 +122,7 @@ VariableUnion: TypeAlias = Annotated[ | Annotated[ArrayObjectVariable, Tag(SegmentType.ARRAY_OBJECT)] | Annotated[ArrayFileVariable, Tag(SegmentType.ARRAY_FILE)] | Annotated[SecretVariable, Tag(SegmentType.SECRET)] + | Annotated[VersionedMemoryVariable, Tag(SegmentType.VERSIONED_MEMORY)] ), Discriminator(get_segment_discriminator), ]