Skip to main content

codetether_rlm/
types.rs

1//! Core RLM types shared across oracle, repl, and router.
2
3use serde::{Deserialize, Serialize};
4
5/// Result of RLM analysis.
6///
7/// # Examples
8///
9/// ```rust
10/// use codetether_rlm::RlmAnalysisResult;
11///
12/// let r = RlmAnalysisResult {
13///     answer: "summary".into(),
14///     iterations: 3,
15///     sub_queries: vec![],
16///     stats: Default::default(),
17/// };
18/// assert_eq!(r.iterations, 3);
19/// ```
20#[derive(Debug, Clone, Serialize, Deserialize)]
21pub struct RlmAnalysisResult {
22    pub answer: String,
23    pub iterations: usize,
24    pub sub_queries: Vec<SubQuery>,
25    pub stats: super::RlmStats,
26}
27
28/// Record of a sub-LM call.
29///
30/// # Examples
31///
32/// ```rust
33/// use codetether_rlm::SubQuery;
34///
35/// let sq = SubQuery {
36///     query: "find errors".into(),
37///     context_slice: None,
38///     response: "found 3".into(),
39///     tokens_used: 150,
40/// };
41/// assert_eq!(sq.tokens_used, 150);
42/// ```
43#[derive(Debug, Clone, Serialize, Deserialize)]
44pub struct SubQuery {
45    pub query: String,
46    pub context_slice: Option<String>,
47    pub response: String,
48    pub tokens_used: usize,
49}