class WeComStreaming: streaming_mode = "block" preview_stream_throttle_ms = 160 preview_min_initial_chars = 18 block_streaming_enabled = True block_streaming_chunk_min_chars = 400 block_streaming_chunk_max_chars = 2000 block_streaming_chunk_break_preference = "paragraph" block_streaming_coalesce_defaults = { "min_chars": 120, "max_chars": 600, "idle_ms": 800, } @classmethod def should_stream(cls, estimated_length: int) -> bool: return estimated_length > cls.block_streaming_chunk_min_chars def create_draft_stream_session(self, target_id: str) -> object: return {"target_id": target_id, "mode": "block"} def create_block_chunker(self) -> object: return { "mode": "length", "min_chars": self.block_streaming_chunk_min_chars, "max_chars": self.block_streaming_chunk_max_chars, }