Skip to content

vllm_omni.engine.duplex.contracts

Model-neutral value types shared by the duplex engine components.

Immutable DTOs plus the DuplexStagePort base class that DuplexOrchestrator implements for the session manager/runner.

DuplexAppendPlan dataclass

prompt instance-attribute

prompt: dict[str, object]

DuplexFence dataclass

Engine-internal session identity used for stage request ids and stale filtering.

epoch class-attribute instance-attribute

epoch: int = 0

session_id instance-attribute

session_id: str

turn_id class-attribute instance-attribute

turn_id: int = 0

DuplexOutputAction

Bases: str, Enum

DIRECT_RESPONSE class-attribute instance-attribute

DIRECT_RESPONSE = 'direct_response'

DuplexOutputContext dataclass

final_stage_id instance-attribute

final_stage_id: int

identity instance-attribute

segment_finished instance-attribute

segment_finished: bool

segment_output_metadata class-attribute instance-attribute

segment_output_metadata: Mapping[str, object] = field(
    default_factory=dict
)

segment_token_ids class-attribute instance-attribute

segment_token_ids: tuple[int, ...] = ()

DuplexOutputDecision dataclass

action instance-attribute

final_output_type class-attribute instance-attribute

final_output_type: str = 'text'

metadata class-attribute instance-attribute

metadata: Mapping[str, object] = field(default_factory=dict)

DuplexRequestIdentity dataclass

fence instance-attribute

fence: DuplexFence

session_id instance-attribute

session_id: str

DuplexStagePort

Bases: ABC

Narrow stage-management surface the session runner/manager use (implemented by DuplexOrchestrator).

stage_count abstractmethod property

stage_count: int

abort_requests abstractmethod async

abort_requests(request_ids: list[str]) -> None

cleanup abstractmethod async

cleanup(
    request_ids: list[str], *, abort: bool = False
) -> None

ensure_request abstractmethod

ensure_request(context: DuplexStageRequestContext) -> None

sampling_defaults abstractmethod

sampling_defaults() -> tuple[object, ...]

submit abstractmethod async

DuplexStageRequestContext dataclass

config_generation instance-attribute

config_generation: int

fence instance-attribute

fence: DuplexFence

final_stage_id instance-attribute

final_stage_id: int

request_id instance-attribute

request_id: str

runtime_config class-attribute instance-attribute

runtime_config: Mapping[str, object] = field(
    default_factory=dict
)

sampling_params instance-attribute

sampling_params: tuple[object, ...]

session_config class-attribute instance-attribute

session_config: Mapping[str, object] = field(
    default_factory=dict
)

session_id instance-attribute

session_id: str

stage_id instance-attribute

stage_id: int

stage_sampling_params property

stage_sampling_params: object

DuplexStageSubmission dataclass

already_submitted instance-attribute

already_submitted: bool

context instance-attribute

prompt instance-attribute

prompt: Mapping[str, object]

resumable class-attribute instance-attribute

resumable: bool = True

DuplexStageSubmissionResult dataclass

replica_id instance-attribute

replica_id: int

request_id instance-attribute

request_id: str

stage_id instance-attribute

stage_id: int

duplex_data_plane_request_info

duplex_data_plane_request_info(
    result: dict[str, object],
) -> tuple[str | None, int | None]

duplex_ephemeral_stage_request_id

duplex_ephemeral_stage_request_id(
    fence: DuplexFence, *, stage_id: int
) -> str

Turn-scoped Stage request id for non-resumable (ephemeral) duplex models.

duplex_resource_request_belongs_to_session

duplex_resource_request_belongs_to_session(
    request_id: str, session_id: str
) -> bool

Return whether a current-format resource request belongs to a session.

duplex_resource_request_id

duplex_resource_request_id(
    fence: DuplexFence, role: str
) -> str

duplex_same_turn_request_ids

duplex_same_turn_request_ids(
    request_id: str, candidate_ids: Iterable[str]
) -> list[str]

Other ephemeral stage ids from the same session, epoch, and turn.

request_id itself is not included. Non-ephemeral ids are ignored.

duplex_session_id_from_request_id

duplex_session_id_from_request_id(
    request_id: str | None,
) -> str | None

Decode the session id from duplex-s.<b64url>.e.<epoch>.r.<role>.

duplex_turn_id_from_request_id

duplex_turn_id_from_request_id(
    request_id: str | None,
) -> int | None

Parse ephemeral …r.stage{N}-turn{T} ids.