rho-coding-agent 1.12.2

A lightweight agent harness inspired by Pi
Documentation
use super::{App, InputSubmissionMode};

impl App {
    pub(super) fn preserve_unapplied_steering_as_follow_ups(&mut self) {
        let mut pending = self
            .accepted_steering
            .drain(..)
            .map(|entry| entry.prompt)
            .chain(self.steering_prompts.drain(..))
            .collect::<std::collections::VecDeque<_>>();
        pending.append(&mut self.queued_prompts);
        self.queued_prompts = pending;
        self.retracting_steering = None;
        self.pending_input_action = None;
        self.pending_input_changed();
        self.select_pending_recall_target();
    }

    pub(super) fn restore_pending_work_to_input(&mut self) {
        let mut messages = self
            .accepted_steering
            .drain(..)
            .map(|entry| entry.prompt.prompt)
            .collect::<Vec<_>>();
        messages.extend(self.steering_prompts.drain(..).map(|prompt| prompt.prompt));
        messages.extend(self.queued_prompts.drain(..).map(|prompt| prompt.prompt));
        if messages.is_empty() {
            return;
        }
        if !self.expanded_input().trim().is_empty() {
            messages.push(self.expanded_input());
        }
        self.input = messages.join("\n\n");
        self.paste_segments.clear();
        self.input_cursor = self.input_char_len();
        self.input_submission_mode = InputSubmissionMode::ParseCommands;
        self.reset_input_history_navigation();
        self.input_changed();
        self.pending_input_changed();
    }
}

#[cfg(test)]
#[path = "run_lifecycle_tests.rs"]
mod tests;