Skip to main content
Glama

CodeGraph CLI MCP Server

by Jakedismo
dependency_analysis_prompts_integration_example.rs7.96 kB
// ABOUTME: Example integration of dependency analysis prompts into PromptSelector // ABOUTME: Shows how to replace placeholder prompts with tier-optimized dependency analysis prompts use crate::dependency_analysis_prompts::*; use crate::prompt_selector::{AnalysisType, PromptSelector, PromptVerbosity}; use codegraph_mcp_core::context_aware_limits::ContextTier; /// Replace the default placeholder prompts with optimized dependency analysis prompts pub fn register_dependency_analysis_prompts(selector: &mut PromptSelector) { // TERSE tier (Small context window) selector.register_prompt( AnalysisType::DependencyAnalysis, PromptVerbosity::Terse, DEPENDENCY_ANALYSIS_TERSE.to_string(), ); // BALANCED tier (Medium context window) selector.register_prompt( AnalysisType::DependencyAnalysis, PromptVerbosity::Balanced, DEPENDENCY_ANALYSIS_BALANCED.to_string(), ); // DETAILED tier (Large context window) selector.register_prompt( AnalysisType::DependencyAnalysis, PromptVerbosity::Detailed, DEPENDENCY_ANALYSIS_DETAILED.to_string(), ); // EXPLORATORY tier (Massive context window) selector.register_prompt( AnalysisType::DependencyAnalysis, PromptVerbosity::Exploratory, DEPENDENCY_ANALYSIS_EXPLORATORY.to_string(), ); } /// Helper function to get the appropriate dependency analysis prompt for a given tier pub fn get_dependency_analysis_prompt(tier: ContextTier) -> &'static str { match tier { ContextTier::Small => DEPENDENCY_ANALYSIS_TERSE, ContextTier::Medium => DEPENDENCY_ANALYSIS_BALANCED, ContextTier::Large => DEPENDENCY_ANALYSIS_DETAILED, ContextTier::Massive => DEPENDENCY_ANALYSIS_EXPLORATORY, } } #[cfg(test)] mod tests { use super::*; #[test] fn test_register_all_dependency_prompts() { let mut selector = PromptSelector::new(); // Register dependency analysis prompts register_dependency_analysis_prompts(&mut selector); // Verify all tiers are registered for tier in [ ContextTier::Small, ContextTier::Medium, ContextTier::Large, ContextTier::Massive, ] { let prompt = selector .select_prompt(AnalysisType::DependencyAnalysis, tier) .expect("Dependency prompt should be registered"); // Verify it's not the placeholder assert!( !prompt.contains("placeholder prompt"), "Should not be placeholder for tier {:?}", tier ); // Verify it contains expected content assert!( prompt.contains("dependency"), "Should mention dependency for tier {:?}", tier ); assert!( prompt.contains("tool_call"), "Should include JSON format for tier {:?}", tier ); } } #[test] fn test_tier_appropriate_depth() { // TERSE should limit depth assert!(DEPENDENCY_ANALYSIS_TERSE.contains("depth=1 or 2 max")); // BALANCED should use moderate depth assert!(DEPENDENCY_ANALYSIS_BALANCED.contains("depth=2-3")); // DETAILED should use deeper analysis assert!(DEPENDENCY_ANALYSIS_DETAILED.contains("depth=3-5")); // EXPLORATORY should use maximum depth assert!(DEPENDENCY_ANALYSIS_EXPLORATORY.contains("depth=5-10")); } #[test] fn test_json_format_enforcement() { for prompt in [ DEPENDENCY_ANALYSIS_TERSE, DEPENDENCY_ANALYSIS_BALANCED, DEPENDENCY_ANALYSIS_DETAILED, DEPENDENCY_ANALYSIS_EXPLORATORY, ] { // All prompts should enforce JSON format assert!(prompt.contains("\"reasoning\"")); assert!(prompt.contains("\"tool_call\"")); assert!(prompt.contains("\"is_final\"")); } } #[test] fn test_zero_heuristics_requirement() { for prompt in [ DEPENDENCY_ANALYSIS_TERSE, DEPENDENCY_ANALYSIS_BALANCED, DEPENDENCY_ANALYSIS_DETAILED, DEPENDENCY_ANALYSIS_EXPLORATORY, ] { // All prompts should emphasize zero heuristics assert!( prompt.contains("ZERO HEURISTICS") || prompt.contains("NO HEURISTICS"), "Prompt should enforce zero heuristics" ); } } #[test] fn test_all_tools_mentioned() { let expected_tools = [ "get_transitive_dependencies", "detect_circular_dependencies", "trace_call_chain", "calculate_coupling_metrics", "get_hub_nodes", "get_reverse_dependencies", ]; for prompt in [ DEPENDENCY_ANALYSIS_TERSE, DEPENDENCY_ANALYSIS_BALANCED, DEPENDENCY_ANALYSIS_DETAILED, DEPENDENCY_ANALYSIS_EXPLORATORY, ] { for tool in &expected_tools { assert!( prompt.contains(tool), "Prompt should mention tool: {}", tool ); } } } #[test] fn test_tier_specific_guidance() { // TERSE should emphasize brevity assert!(DEPENDENCY_ANALYSIS_TERSE.contains("Limit tool calls to 3-5 total")); // BALANCED should emphasize systematic approach assert!(DEPENDENCY_ANALYSIS_BALANCED.contains("SYSTEMATIC APPROACH")); // DETAILED should emphasize comprehensiveness assert!(DEPENDENCY_ANALYSIS_DETAILED.contains("COMPREHENSIVE")); // EXPLORATORY should emphasize exhaustiveness assert!(DEPENDENCY_ANALYSIS_EXPLORATORY.contains("EXHAUSTIVE")); } } /// Example usage in agentic orchestrator #[cfg(test)] mod integration_examples { use super::*; #[test] fn example_terse_usage() { // Example: Small tier model analyzing simple dependency question let tier = ContextTier::Small; let prompt = get_dependency_analysis_prompt(tier); // Terse prompt guides LLM to: // 1. Use minimal tool calls (3-5 max) // 2. Focus on immediate dependencies (depth=1-2) // 3. Provide direct, actionable answers assert!(prompt.contains("3-5 total")); } #[test] fn example_balanced_usage() { // Example: Medium tier model for production analysis let tier = ContextTier::Medium; let prompt = get_dependency_analysis_prompt(tier); // Balanced prompt guides LLM to: // 1. Systematic multi-tool analysis (5-10 calls) // 2. Analyze both forward and reverse dependencies // 3. Include coupling metrics and circular dependency checks assert!(prompt.contains("5-10 tool calls")); } #[test] fn example_detailed_usage() { // Example: Large tier model for architectural analysis let tier = ContextTier::Large; let prompt = get_dependency_analysis_prompt(tier); // Detailed prompt guides LLM to: // 1. Comprehensive multi-level mapping (10-15 calls) // 2. Deep dependency trees (depth=3-5) // 3. Complete refactoring roadmap assert!(prompt.contains("10-15 tool calls")); } #[test] fn example_exploratory_usage() { // Example: Massive tier model for codebase-wide analysis let tier = ContextTier::Massive; let prompt = get_dependency_analysis_prompt(tier); // Exploratory prompt guides LLM to: // 1. Exhaustive multi-dimensional exploration (15-20+ calls) // 2. Statistical analysis and pattern detection // 3. Complete architectural topology with metrics assert!(prompt.contains("15-20")); } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Jakedismo/codegraph-rust'

If you have feedback or need assistance with the MCP directory API, please join our Discord server