Skip to main content

systemprompt_models/wire/origin/
harness.rs

1//! The mapping between the wire vocabulary and the evaluator harnesses the
2//! feedback pipeline scores.
3//!
4//! Copyright (c) systemprompt.io — Business Source License 1.1.
5//! See <https://systemprompt.io> for licensing details.
6
7use super::{ClientKind, OriginParseError};
8use crate::feedback::EvaluatorClient;
9
10impl From<EvaluatorClient> for ClientKind {
11    fn from(client: EvaluatorClient) -> Self {
12        match client {
13            EvaluatorClient::ClaudeCode => Self::ClaudeCode,
14            EvaluatorClient::ClaudeDesktop => Self::ClaudeDesktop,
15            EvaluatorClient::Codex => Self::Codex,
16            EvaluatorClient::OpenCode => Self::OpenCode,
17            EvaluatorClient::Hermes => Self::Hermes,
18        }
19    }
20}
21
22impl TryFrom<ClientKind> for EvaluatorClient {
23    type Error = OriginParseError;
24
25    fn try_from(kind: ClientKind) -> Result<Self, Self::Error> {
26        match kind {
27            ClientKind::ClaudeCode => Ok(Self::ClaudeCode),
28            ClientKind::ClaudeDesktop => Ok(Self::ClaudeDesktop),
29            ClientKind::Codex => Ok(Self::Codex),
30            ClientKind::OpenCode => Ok(Self::OpenCode),
31            ClientKind::Hermes => Ok(Self::Hermes),
32            ClientKind::Pi | ClientKind::Other | ClientKind::Internal | ClientKind::Unknown => {
33                Err(OriginParseError::NotAHarness(kind.as_str()))
34            },
35        }
36    }
37}