vv-agent 0.4.8

VectorVein agent runtime, SDK, CLI, tools, and workspace backends
Documentation
use std::collections::BTreeMap;

use serde_json::Value;

use super::RuntimeSubAgentSession;

impl RuntimeSubAgentSession {
    pub(super) fn queue_steering(&self, prompt: &str) -> Result<(), String> {
        let prompt = prompt.trim();
        if prompt.is_empty() {
            return Err("Steering prompt cannot be empty.".to_string());
        }
        self.steering_queue
            .lock()
            .map_err(|_| "Sub-agent steering queue lock is poisoned.".to_string())?
            .push_back(prompt.to_string());
        self.emit(
            "session_steer_queued",
            BTreeMap::from([("prompt".to_string(), Value::String(prompt.to_string()))]),
        );
        Ok(())
    }

    pub(super) fn sanitize_state_for_resume(&self) -> usize {
        let Ok(mut state) = self.state.lock() else {
            return 0;
        };
        let sanitized = crate::memory::sanitize_for_resume(&state.messages);
        let removed = state.messages.len().saturating_sub(sanitized.len());
        state.messages = sanitized;
        removed
    }
}