malvin 0.2.6

Non-interactive research and coding agent
use super::session::NpmPiSession;
use crate::acp::AgentError;
use crate::bridge_sdk::{BridgeSpawnArgs, MemWatchArgs, start_mem_watch};

pub(crate) async fn npm_pi_spawn_bridge(args: BridgeSpawnArgs<'_>) -> Result<NpmPiSession, AgentError> {
    let ticket = crate::malvin_sandbox::take_sandbox_spawn_ticket().map_err(AgentError)?;
    if crate::acp::test_no_real_agent_enabled() {
        return Err(AgentError(
            "npm pi mock session is not configured for MALVIN_TEST_NO_REAL_AGENT".into(),
        ));
    }
    let session = super::session_process::spawn_npm_pi_session(&args, ticket)?;
    start_mem_watch(MemWatchArgs {
        process_group_id: session.process_group_id,
        reader_dead: &session.reader_dead,
        work_dir: &session.work_dir,
        spawn_pid_baseline: &session.spawn_pid_baseline,
        run_dir: session.run_dir.as_deref(),
    });
    Ok(session)
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn kiss_cov_spawn_bridge() {
        let _ = npm_pi_spawn_bridge;
    }
}