1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
7pub enum HostKind {
8 Codex,
9 Cursor,
10 VSCode,
11 Claude,
12 JetBrains,
13 Unknown,
14}
15
16impl HostKind {
17 pub fn as_label(&self) -> &'static str {
18 match self {
19 HostKind::Codex => "codex",
20 HostKind::Cursor => "cursor",
21 HostKind::VSCode => "vscode",
22 HostKind::Claude => "claude",
23 HostKind::JetBrains => "jetbrains",
24 HostKind::Unknown => "unknown",
25 }
26 }
27
28 pub fn display_name(&self) -> &'static str {
29 match self {
30 HostKind::Codex => "Codex CLI",
31 HostKind::Cursor => "Cursor",
32 HostKind::VSCode => "VS Code",
33 HostKind::Claude => "Claude Desktop",
34 HostKind::JetBrains => "JetBrains IDEs",
35 HostKind::Unknown => "Unknown",
36 }
37 }
38}
39
40#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
42pub enum HostFormat {
43 Toml,
44 Json,
45}