vv-agent 0.6.0

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

use serde_json::Value;

use crate::runtime::sub_agents::events::{
    agent_status_value, emit_parent_sub_agent_event, emit_sub_agent_session_event,
    enrich_sub_agent_payload,
};
use crate::types::AgentResult;

use super::RuntimeSubAgentSession;

impl RuntimeSubAgentSession {
    pub(in crate::runtime::sub_agents) fn emit(
        &self,
        event: &str,
        payload: BTreeMap<String, Value>,
    ) {
        emit_sub_agent_session_event(&self.listeners, event, &payload);
        let enriched =
            enrich_sub_agent_payload(&payload, &self.task_id, &self.session_id, &self.agent_name);
        emit_parent_sub_agent_event(
            &self.parent_log_handler,
            &self.parent_event_handler,
            &format!("sub_agent_{event}"),
            enriched,
        );
    }

    pub(super) fn emit_session_run_end(&self, result: &AgentResult) {
        self.emit(
            "session_run_end",
            BTreeMap::from([
                (
                    "status".to_string(),
                    Value::String(agent_status_value(result.status).to_string()),
                ),
                (
                    "cycles".to_string(),
                    Value::from(result.cycles.len() as u64),
                ),
                (
                    "final_answer".to_string(),
                    result
                        .final_answer
                        .clone()
                        .map(Value::String)
                        .unwrap_or(Value::Null),
                ),
                (
                    "wait_reason".to_string(),
                    result
                        .wait_reason
                        .clone()
                        .map(Value::String)
                        .unwrap_or(Value::Null),
                ),
                (
                    "error".to_string(),
                    result
                        .error
                        .clone()
                        .map(Value::String)
                        .unwrap_or(Value::Null),
                ),
            ]),
        );
    }
}