(
&self,
effective_system_prompt: &str,
effective_prompt: &str,
message_count: usize,
session_id: Option<&str>,
event_tx: &Option<mpsc::Sender<AgentEven
| 15 | |
| 16 | impl AgentLoop { |
| 17 | pub(super) async fn prepare_turn_context( |
| 18 | &self, |
| 19 | effective_system_prompt: &str, |
| 20 | effective_prompt: &str, |
| 21 | message_count: usize, |
| 22 | session_id: Option<&str>, |
| 23 | event_tx: &Option<mpsc::Sender<AgentEvent>>, |
| 24 | ) -> TurnContext { |
| 25 | let built_system_prompt = Some(effective_system_prompt.to_string()); |
| 26 | let effective_prompt = self |
| 27 | .fire_pre_prompt( |
| 28 | session_id.unwrap_or(""), |
| 29 | effective_prompt, |
| 30 | &built_system_prompt, |
| 31 | message_count, |
| 32 | ) |
| 33 | .await |
| 34 | .unwrap_or_else(|| effective_prompt.to_string()); |
| 35 | |
| 36 | if let Some(ref sp) = self.config.security_provider { |
| 37 | sp.taint_input(&effective_prompt); |
| 38 | } |
| 39 | |
| 40 | let mut context_results = self |
| 41 | .resolve_prompt_context(&effective_prompt, session_id, event_tx) |
| 42 | .await; |
| 43 | self.recall_memory_context(&effective_prompt, &mut context_results, event_tx) |
| 44 | .await; |
| 45 | |
| 46 | let context_assembly = self.assemble_context_results(&context_results); |
| 47 | self.emit_context_resolved(&context_assembly, event_tx) |
| 48 | .await; |
| 49 | |
| 50 | TurnContext { |
| 51 | augmented_system: self.build_augmented_system_prompt_with_base( |
| 52 | effective_system_prompt, |
| 53 | &context_assembly, |
| 54 | ), |
| 55 | effective_prompt, |
| 56 | } |
| 57 | } |
| 58 | |
| 59 | async fn resolve_prompt_context( |
| 60 | &self, |
no test coverage detected