UNPKG

claude-flow-novice

Version:

Claude Flow Novice - Advanced orchestration platform for multi-agent AI workflows with CFN Loop architecture Includes CodeSearch (hybrid SQLite + pgvector), mem0/memgraph specialists, and all CFN skills.

210 lines (143 loc) 6 kB
# Phase 4: Agent Query API Implementation ## Overview Phase 4 of the AST-Aware CodeSearch Accelerator implements a high-level query interface for agent use cases, replacing complex grep patterns with structured SQL queries. The implementation provides fast (<50ms) queries on 10k+ entity indexes with support for both Rust and TypeScript codebases. ## Features Implemented ### 1. Query API (`src/query_api.rs`) The QueryApi struct provides six core query methods: - **`find_functions_using_type(type_name)`**: Find all functions that use a specific type - **`find_callers_of_function(function_name, exclude_module)`**: Find all callers of a function - **`find_types_used_elsewhere(file_path)`**: Find types defined in a file that are used elsewhere - **`find_implementations(trait_name)`**: Find all implementations of a trait/interface - **`find_public_api(module_path)`**: Get the public API surface of a module - **`find_references_to_path(path)`**: Find all references to a path for refactoring ### 2. CLI Commands #### `codesearch find` Command Structured search with multiple filter options: ```bash # Find functions using a type codesearch find --uses-type Album # Find callers of a function, excluding certain module codesearch find --called-by create_album --exclude tests # Find types from a file used elsewhere codesearch find --types-from src/models.rs # Find implementations of a trait codesearch find --implements Display # Find public API of a module codesearch find --public-api auth # Filter by entity kind codesearch find --uses-type String --kind function # Output in different formats codesearch find --uses-type Album --format json codesearch find --uses-type Album --format csv --output results.csv ``` #### `codesearch refs` Command Find all references to an entity: ```bash # Simple reference search codesearch refs create_album # With specific entity kind codesearch refs Album --kind struct # Group results by file codesearch refs Album --group-by-file # Tree format for visual hierarchy codesearch refs Album --format tree # Filter to specific file codesearch refs Album --file src/main.rs # Inbound/outbound reference filtering codesearch refs create_album --inbound codesearch refs create_album --outbound ``` ### 3. Performance Optimizations - Database indexes optimized for common query patterns - Composite indexes for entity+kind, file+kind, and type+usage patterns - Query result caching in SQLite WAL mode - Memory-mapped I/O for large databases (256MB default) ### 4. Output Formats All queries support multiple output formats: - **Simple**: One line per result (default) - **Detailed**: Full entity information with context - **JSON**: Machine-readable format for agents - **CSV**: Spreadsheet-friendly format - **Tree**: Hierarchical view for references ## Usage Examples ### Agent Integration The query API is designed for easy integration with AI agents: ```rust use crate::query_api::QueryApi; use crate::store_v2::StoreV2; let store = StoreV2::new(&db_path)?; let query_api = QueryApi::new(store); // Find all functions using the Album type let results = query_api.find_functions_using_type("Album")?; // JSON output for agent consumption let json_output = results.format_json()?; ``` ### Refactoring Support The references query enables safe refactoring: ```bash # Before renaming a function codesearch refs old_function_name --format tree # Check all uses of a type before major changes codesearch find --uses-type MyStruct --format detailed ``` ### Code Analysis Understand codebase structure and dependencies: ```bash # Public API surface codesearch find --public-api . --format json # Type usage statistics codesearch find --types-from src/lib.rs --format detailed ``` ## Database Schema The query API uses the v2 schema with optimized tables: - `entities`: Core entity definitions (functions, types, etc.) - `refs`: Cross-references between entities - `type_usage`: Type usage tracking for dependency analysis - `entity_embeddings`: Vector embeddings for semantic search ## Performance Metrics Target performance for all queries: - **< 50ms** for databases with 10,000+ entities - **< 200ms** for databases with 100,000+ entities - **Concurrent query support** through SQLite connection pooling ## Testing Run the test suite: ```bash # Basic functionality test ./test_query_api.sh # Performance benchmarks cargo test --release query_performance # Integration tests cargo test query_api_integration ``` ## Future Enhancements Planned improvements for Sprint 4-2: 1. **Natural Language Query Parsing** - Parse "find all functions that return Result" - Support "show me callers of main in tests only" 2. **Advanced Filters** - Filter by visibility (pub, pub(crate), private) - Filter by attributes (#[test], #[async_trait]) - Date range filters for recently changed code 3. **Query Composition** - Chain multiple queries - Set operations (union, intersection, difference) 4. **Performance Optimizations** - Query result pagination - Incremental result streaming - Parallel query execution ## Integration with CFN Agents The query API is designed to work seamlessly with CFN agents: - Agents can query code structure without parsing files - Fast lookups enable real-time code analysis - JSON output format easy for agent consumption - Structured queries replace brittle grep patterns ## Troubleshooting ### Common Issues 1. **Slow queries**: Check database indexes with `EXPLAIN QUERY PLAN` 2. **No results**: Verify entities are indexed with `codesearch stats` 3. **JSON errors**: Ensure entity names are properly quoted ### Debug Queries Enable debug logging to see actual SQL queries: ```bash RUST_LOG=debug codesearch find --uses-type Album ```