codetether_agent/rlm/
mod.rs1pub mod chunker;
11pub mod context_trace;
12pub mod oracle;
13pub mod repl;
14pub mod router;
15pub mod tools;
16
17pub use chunker::{Chunk, ChunkOptions, ContentType, RlmChunker};
18pub use context_trace::{ContextEvent, ContextTrace};
19pub use oracle::{
20 AstPayload, AstResult, FinalPayload, GeneratedQuery, GrepMatch, GrepOracle, GrepPayload,
21 GrepVerification, OracleResult, OracleTracePersistResult, OracleTraceRecord,
22 OracleTraceStorage, OracleTraceSyncStats, QueryTemplate, SemanticPayload, TemplateKind,
23 TraceStep, TraceValidator, TreeSitterOracle, TreeSitterVerification, ValidatedTrace,
24 VerificationMethod,
25};
26pub use repl::{ReplRuntime, RlmAnalysisResult, RlmExecutor, RlmRepl, SubQuery};
27pub use router::{RlmRouter, RoutingContext, RoutingResult};
28pub use tools::{RlmToolResult, dispatch_tool_call, rlm_tool_definitions};
29
30use serde::{Deserialize, Serialize};
31
32#[derive(Debug, Clone, Default, Serialize, Deserialize)]
34pub struct RlmStats {
35 pub input_tokens: usize,
36 pub output_tokens: usize,
37 pub iterations: usize,
38 pub subcalls: usize,
39 pub elapsed_ms: u64,
40 pub compression_ratio: f64,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize)]
74pub struct RlmResult {
75 pub processed: String,
77 pub stats: RlmStats,
79 pub success: bool,
81 pub error: Option<String>,
83 #[serde(default, skip_serializing_if = "Option::is_none")]
86 pub trace: Option<context_trace::ContextTrace>,
87 #[serde(default, skip_serializing_if = "Option::is_none")]
90 pub trace_id: Option<uuid::Uuid>,
91}
92
93#[derive(Debug, Clone, Serialize, Deserialize)]
95pub struct RlmConfig {
96 #[serde(default = "default_mode")]
98 pub mode: String,
99
100 #[serde(default = "default_threshold")]
102 pub threshold: f64,
103
104 #[serde(default = "default_max_iterations")]
106 pub max_iterations: usize,
107
108 #[serde(default = "default_max_subcalls")]
110 pub max_subcalls: usize,
111
112 #[serde(default = "default_runtime")]
114 pub runtime: String,
115
116 pub root_model: Option<String>,
118
119 pub subcall_model: Option<String>,
121}
122
123fn default_mode() -> String {
124 "auto".to_string()
125}
126
127fn default_threshold() -> f64 {
128 0.35
129}
130
131fn default_max_iterations() -> usize {
132 15
133}
134
135fn default_max_subcalls() -> usize {
136 50
137}
138
139fn default_runtime() -> String {
140 "rust".to_string()
141}
142
143impl Default for RlmConfig {
144 fn default() -> Self {
145 Self {
146 mode: default_mode(),
147 threshold: default_threshold(),
148 max_iterations: default_max_iterations(),
149 max_subcalls: default_max_subcalls(),
150 runtime: default_runtime(),
151 root_model: None,
152 subcall_model: None,
153 }
154 }
155}