Skip to main content

DeltaDisplayFormatter

Struct DeltaDisplayFormatter 

Source
pub struct DeltaDisplayFormatter { /* private fields */ }
Expand description

Delta display formatter

Formats delta content for user display with consistent styling across all parsers.

Implementations§

Source§

impl DeltaDisplayFormatter

Source

pub const fn new() -> Self

Create a new formatter with default settings

Source

pub fn format_thinking( &self, content: &str, prefix: &str, colors: Colors, terminal_mode: TerminalMode, ) -> String

Format thinking content specifically.

Thinking content has special formatting to distinguish it from regular text.

§Terminal Mode Behavior
  • TerminalMode::Full / TerminalMode::Basic: May include ANSI colors.
  • TerminalMode::None: MUST be plain text (no ANSI sequences).
Source

pub fn format_tool_input( &self, content: &str, prefix: &str, colors: Colors, terminal_mode: TerminalMode, ) -> String

Format tool input specifically

Tool input is shown with appropriate styling.

§Terminal Mode Behavior
  • Full mode (TTY): Renders the full [prefix] └─ content pattern for each delta, providing real-time feedback with clarity about which agent’s tool is being invoked.

  • Basic/None modes (non-TTY): Suppresses per-delta output to prevent repeated prefixed lines in logs and CI output. Tool input is accumulated and rendered ONCE at completion boundaries (message_stop).

§CCS Spam Prevention (Bug Fix)

This implementation prevents repeated “[ccs/glm]” and “[ccs/codex]” prefixed lines for tool input deltas in non-TTY modes. The fix is validated with comprehensive regression tests that simulate real-world streaming scenarios.

See comprehensive regression tests:

  • tests/integration_tests/ccs_delta_spam_systematic_reproduction.rs (NEW: systematic reproduction test)
  • tests/integration_tests/ccs_all_delta_types_spam_reproduction.rs (comprehensive coverage)
  • tests/integration_tests/ccs_nuclear_spam_test.rs (tool input with 500+ deltas)
  • tests/integration_tests/ccs_streaming_spam_all_deltas.rs (all delta types including tool input)
§Future Enhancement

For streaming tool inputs with multiple deltas in Full mode, consider suppressing the [prefix] on continuation lines to reduce visual noise:

  • First tool input line: [prefix] Tool: name
  • Continuation: └─ more input (aligned, no prefix)

This would require tracking whether the prefix has been displayed for the current tool block, likely via the streaming session state.

Trait Implementations§

Source§

impl Default for DeltaDisplayFormatter

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.