Skip to main content

neuron_turn/
config.rs

1//! Configuration for NeuronTurn.
2
3/// Static configuration for a NeuronTurn instance.
4///
5/// Per-request overrides come from `OperatorInput.config` (layer0's `OperatorConfig`).
6/// This struct holds the defaults.
7pub struct NeuronTurnConfig {
8    /// Base system prompt for this turn implementation.
9    pub system_prompt: String,
10
11    /// Default model identifier.
12    pub default_model: String,
13
14    /// Default maximum output tokens per provider call.
15    pub default_max_tokens: u32,
16
17    /// Default maximum ReAct loop iterations.
18    pub default_max_turns: u32,
19}
20
21impl Default for NeuronTurnConfig {
22    fn default() -> Self {
23        Self {
24            system_prompt: "You are a helpful assistant.".into(),
25            default_model: String::new(),
26            default_max_tokens: 4096,
27            default_max_turns: 25,
28        }
29    }
30}
31
32#[cfg(test)]
33mod tests {
34    use super::*;
35
36    #[test]
37    fn default_config_values() {
38        let config = NeuronTurnConfig::default();
39        assert_eq!(config.system_prompt, "You are a helpful assistant.");
40        assert!(config.default_model.is_empty());
41        assert_eq!(config.default_max_tokens, 4096);
42        assert_eq!(config.default_max_turns, 25);
43    }
44
45    #[test]
46    fn custom_config_values() {
47        let config = NeuronTurnConfig {
48            system_prompt: "Custom prompt".into(),
49            default_model: "gpt-4o".into(),
50            default_max_tokens: 2048,
51            default_max_turns: 10,
52        };
53        assert_eq!(config.system_prompt, "Custom prompt");
54        assert_eq!(config.default_model, "gpt-4o");
55        assert_eq!(config.default_max_tokens, 2048);
56        assert_eq!(config.default_max_turns, 10);
57    }
58}