Skip to main content

muster/domain/process/
kind.rs

1use serde::{Deserialize, Serialize};
2use strum::Display;
3
4/// Which sidebar section a process belongs to.
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Display, Serialize, Deserialize)]
6#[strum(serialize_all = "lowercase")]
7#[serde(rename_all = "lowercase")]
8pub enum ProcessKind {
9    /// A CLI coding agent (Claude Code, Codex, ...).
10    Agent,
11    /// A plain interactive shell.
12    Terminal,
13    /// A long-running dev command (dev server, queue worker, ...).
14    Command,
15}
16
17#[cfg(test)]
18mod tests {
19    use super::*;
20
21    #[test]
22    fn displays_lowercase() {
23        assert_eq!(ProcessKind::Agent.to_string(), "agent");
24        assert_eq!(ProcessKind::Terminal.to_string(), "terminal");
25        assert_eq!(ProcessKind::Command.to_string(), "command");
26    }
27}