Queue envelopes exchanged between DuplexOmniEngine and DuplexOrchestrator.
Sessions live inside the engine (DuplexSessionRunner on the orchestrator loop). The API layer only opens/closes/resumes/touches sessions through correlated RPC and pushes DuplexCommand objects one-way; every session output travels back as a DuplexSessionEventMessage.
CloseDuplexSessionMessage
Bases: EngineQueueMessage
control_id instance-attribute
reason class-attribute instance-attribute
reason: str = 'client_close'
session_id instance-attribute
type class-attribute instance-attribute
type: Literal["close_duplex_session"] = (
"close_duplex_session"
)
DuplexControlResultMessage
Bases: EngineQueueMessage
capabilities class-attribute instance-attribute
control_id instance-attribute
error_code class-attribute instance-attribute
error_code: str | None = None
error_message class-attribute instance-attribute
error_message: str | None = None
error_retryable class-attribute instance-attribute
error_retryable: bool = False
lease_generation class-attribute instance-attribute
lease_generation: int | None = None
operation instance-attribute
public_session class-attribute instance-attribute
rpc_correlation_key property
session_id instance-attribute
type class-attribute instance-attribute
type: Literal["duplex_control_result"] = (
"duplex_control_result"
)
DuplexSessionCommandMessage
Bases: EngineQueueMessage
One-way session command; rejections come back as ErrorEvent.
command instance-attribute
session_id instance-attribute
type class-attribute instance-attribute
type: Literal["duplex_session_command"] = (
"duplex_session_command"
)
DuplexSessionError
Bases: RuntimeError
A session control operation was rejected by the engine.
retryable instance-attribute
session_id instance-attribute
DuplexSessionEventMessage
Bases: EngineQueueMessage
A typed session event on the engine output queue.
session_id instance-attribute
type class-attribute instance-attribute
type: Literal["duplex_session_event"] = (
"duplex_session_event"
)
OpenDuplexSessionMessage
Bases: EngineQueueMessage
control_id instance-attribute
session_config instance-attribute
session_id instance-attribute
type class-attribute instance-attribute
type: Literal["open_duplex_session"] = "open_duplex_session"
ResumeDuplexSessionMessage
Bases: EngineQueueMessage
control_id instance-attribute
expected_lease_generation instance-attribute
expected_lease_generation: int
session_id instance-attribute
type class-attribute instance-attribute
type: Literal["resume_duplex_session"] = (
"resume_duplex_session"
)
TouchDuplexSessionMessage
Bases: EngineQueueMessage
activity instance-attribute
control_id instance-attribute
expected_lease_generation class-attribute instance-attribute
expected_lease_generation: int | None = None
session_id instance-attribute
type class-attribute instance-attribute
type: Literal["touch_duplex_session"] = (
"touch_duplex_session"
)