vfa_tui/models/
harness.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
5#[serde(rename_all = "kebab-case")]
6pub enum Harness {
7 Codex,
8 Copilot,
9 ClaudeCode,
10 Cursor,
11 Gemini,
12 Kiro,
13 Other,
14}
15
16impl std::fmt::Display for Harness {
17 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
18 let s = serde_json::to_value(self)
19 .ok()
20 .and_then(|v| v.as_str().map(|s| s.to_string()))
21 .unwrap_or_else(|| format!("{:?}", self).to_lowercase());
22 write!(f, "{}", s)
23 }
24}
25
26#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
28#[serde(rename_all = "kebab-case")]
29pub enum SourceType {
30 Original,
31 Adapted,
32 ReferenceOnly,
33}
34
35impl std::fmt::Display for SourceType {
36 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
37 let s = serde_json::to_value(self)
38 .ok()
39 .and_then(|v| v.as_str().map(|s| s.to_string()))
40 .unwrap_or_else(|| format!("{:?}", self).to_lowercase());
41 write!(f, "{}", s)
42 }
43}