@@ -134,6 +134,7 @@ pub struct AgentConfig {
134134 /// with the agent definition and prompt. The callback should return
135135 /// `Some(result)` if it handled the subagent launch, or `None` to
136136 /// fall back to normal execution.
137+ #[ allow( clippy:: type_complexity) ]
137138 pub on_subagent_launch : Option <
138139 Arc <
139140 dyn Fn ( & crate :: subagent:: AgentDefinition , & str ) -> Option < Result < AgentResult > >
@@ -686,6 +687,7 @@ pub struct AgentLoop {
686687// ============================================================================
687688
688689/// Extract a target name from the prompt (e.g., function name, file path).
690+ #[ allow( clippy:: extra_unused_lifetimes) ]
689691fn extract_target_name_from_prompt < ' a > ( prompt : & str , _patterns : & [ & str ] ) -> String {
690692 // Try to extract quoted strings first
691693 if let Some ( start) = prompt. find ( '"' ) {
@@ -794,26 +796,38 @@ pub struct TargetHints {
794796/// Detect language hint from prompt characters.
795797fn detect_language_hint ( prompt : & str ) -> Option < String > {
796798 // Check for Chinese characters
797- if prompt. chars ( ) . any ( |c| '\u{4e00}' <= c && c <= '\u{9fff}' ) {
799+ if prompt
800+ . chars ( )
801+ . any ( |c| ( '\u{4e00}' ..='\u{9fff}' ) . contains ( & c) )
802+ {
798803 return Some ( "zh" . to_string ( ) ) ;
799804 }
800805 // Check for Japanese characters (Hiragana, Katakana, or CJK unified ideographs outside Chinese range)
801806 if prompt
802807 . chars ( )
803- . any ( |c| ( '\u{3040}' <= c && c <= '\u{309f}' ) || ( '\u{30a0}' <= c && c <= '\u{30ff}' ) )
808+ . any ( |c| ( '\u{3040}' ..= '\u{309f}' ) . contains ( & c ) || ( '\u{30a0}' ..= '\u{30ff}' ) . contains ( & c ) )
804809 {
805810 return Some ( "ja" . to_string ( ) ) ;
806811 }
807812 // Check for Korean characters
808- if prompt. chars ( ) . any ( |c| '\u{ac00}' <= c && c <= '\u{d7af}' ) {
813+ if prompt
814+ . chars ( )
815+ . any ( |c| ( '\u{ac00}' ..='\u{d7af}' ) . contains ( & c) )
816+ {
809817 return Some ( "ko" . to_string ( ) ) ;
810818 }
811819 // Check for Arabic
812- if prompt. chars ( ) . any ( |c| '\u{0600}' <= c && c <= '\u{06ff}' ) {
820+ if prompt
821+ . chars ( )
822+ . any ( |c| ( '\u{0600}' ..='\u{06ff}' ) . contains ( & c) )
823+ {
813824 return Some ( "ar" . to_string ( ) ) ;
814825 }
815826 // Check for Russian/Cyrillic
816- if prompt. chars ( ) . any ( |c| '\u{0400}' <= c && c <= '\u{04ff}' ) {
827+ if prompt
828+ . chars ( )
829+ . any ( |c| ( '\u{0400}' ..='\u{04ff}' ) . contains ( & c) )
830+ {
817831 return Some ( "ru" . to_string ( ) ) ;
818832 }
819833 None
@@ -1757,11 +1771,7 @@ impl AgentLoop {
17571771 match hook_result {
17581772 HookResult :: Continue ( Some ( modified) ) => {
17591773 // Parse the intent detection result
1760- if let Ok ( result) = serde_json:: from_value :: < IntentDetectionResult > ( modified) {
1761- Some ( result)
1762- } else {
1763- None
1764- }
1774+ serde_json:: from_value :: < IntentDetectionResult > ( modified) . ok ( )
17651775 }
17661776 HookResult :: Block ( _) => {
17671777 // Harness blocked intent detection - use fallback
@@ -2552,11 +2562,13 @@ impl AgentLoop {
25522562 let session_id_str = session_id. unwrap_or ( "" ) ;
25532563 let context_results = if !self . config . context_providers . is_empty ( ) {
25542564 // Step 1: Fire IntentDetection harness point on EVERY prompt
2565+ #[ allow( clippy:: needless_borrow) ]
25552566 let harness_intent = self
25562567 . fire_intent_detection ( effective_prompt, & session_id_str, & workspace)
25572568 . await ;
25582569
25592570 // Step 2: Build perception event from harness result, or fallback to local detection
2571+ #[ allow( clippy:: needless_borrow) ]
25602572 let perception_event = if let Some ( detected) = harness_intent {
25612573 tracing:: info!(
25622574 intent = %detected. detected_intent,
0 commit comments