objectiveai_cli/command/
kill_all.rs1use std::collections::HashSet;
22
23use objectiveai_sdk::cli::command::kill_all::{Request, Response};
24
25use crate::context::Context;
26use crate::error::Error;
27
28pub async fn execute(ctx: &Context, _request: Request) -> Result<Response, Error> {
29 let dir = ctx.filesystem.dir().clone();
30 let me = std::process::id();
31 let mut killed: HashSet<u32> = HashSet::new();
32 for _ in 0..2 {
33 let pids = objectiveai_sdk::lockfile::owners_in_tree(&dir)
34 .await
35 .map_err(|e| Error::Spawn("read lock owners in tree".to_string(), e))?;
36 for pid in pids {
37 if pid == me || pid == 0 {
40 continue;
41 }
42 if crate::spawn::kill_pid(pid) == 1 {
43 killed.insert(pid);
44 }
45 }
46 }
47 Ok(Response { killed: killed.len() })
48}
49
50pub mod request_schema {
51 use objectiveai_sdk::cli::command::kill_all as sdk;
52 use objectiveai_sdk::cli::command::kill_all::request_schema::{Request, Response};
53
54 use crate::context::Context;
55 use crate::error::Error;
56
57 pub async fn execute(_ctx: &Context, _request: Request) -> Result<Response, Error> {
58 Ok(objectiveai_sdk::cli::command::ResponseSchema(schemars::schema_for!(sdk::Request)))
59 }
60}
61
62pub mod response_schema {
63 use objectiveai_sdk::cli::command::kill_all as sdk;
64 use objectiveai_sdk::cli::command::kill_all::response_schema::{Request, Response};
65
66 use crate::context::Context;
67 use crate::error::Error;
68
69 pub async fn execute(_ctx: &Context, _request: Request) -> Result<Response, Error> {
70 Ok(objectiveai_sdk::cli::command::ResponseSchema(schemars::schema_for!(sdk::Response)))
71 }
72}