malvin 0.2.4

Non-interactive research and coding agent
#[cfg(unix)]
use std::collections::HashSet;

#[cfg(unix)]
use super::unix_process_group_kill_targets::{descendant_pids, kill_targets_for_teardown};
#[cfg(unix)]
use super::unix_process_group_ps::list_proc_rows;

#[cfg(unix)]
pub fn sandbox_monitor_pids(
    process_group_id: Option<u32>,
    spawn_baseline: &HashSet<u32>,
) -> HashSet<u32> {
    let rows = list_proc_rows().unwrap_or_default();
    let malvin_pid = std::process::id();
    let mut targets = descendant_pids(&HashSet::from([malvin_pid]), &rows);
    targets.extend(kill_targets_for_teardown(
        process_group_id,
        Some(spawn_baseline),
    ));
    targets
}