frigg 0.4.1

Local-first MCP server for code understanding.
Documentation
#![allow(dead_code)]

pub(super) use super::super::dsl::PredicateLeaf;
pub(super) use super::super::facts::SelectionFacts;

mod candidate;
mod intent;
mod laravel;
mod query;
mod state;

pub(crate) use candidate::*;
pub(crate) use intent::*;
pub(crate) use laravel::*;
pub(crate) use query::*;
pub(crate) use state::*;

#[cfg(test)]
mod tests {
    #![allow(clippy::field_reassign_with_default)]

    use super::super::super::facts::SelectionFacts;
    use super::*;
    use crate::searcher::laravel::LaravelUiSurfaceClass;

    #[test]
    fn selection_predicates_apply_candidate_and_query_flags() {
        let mut facts = SelectionFacts::default();
        facts.class = crate::searcher::surfaces::HybridSourceClass::Runtime;
        facts.path_overlap = 1;
        facts.blade_specific_path_overlap = 1;
        facts.specific_witness_path_overlap = 1;
        facts.query_has_exact_terms = true;
        facts.query_has_identifier_anchor = true;
        facts.has_exact_query_term_match = true;
        facts.path_stem_is_main = true;
        facts.wants_runtime_witnesses = true;

        assert!((class_is_runtime_leaf().eval)(&facts));
        assert!((path_overlap_leaf().eval)(&facts));
        assert!((blade_specific_path_overlap_leaf().eval)(&facts));
        assert!((specific_witness_path_overlap_leaf().eval)(&facts));
        assert!((has_exact_query_term_match_leaf().eval)(&facts));
        assert!((path_stem_is_main_leaf().eval)(&facts));
    }

    #[test]
    fn selection_predicates_reflect_state_counts() {
        let mut facts = SelectionFacts::default();
        facts.seen_count = 0;
        facts.runtime_seen = 0;
        facts.seen_ci_workflows = 1;
        facts.seen_repo_root_runtime_configs = 2;
        facts.seen_typescript_runtime_module_indexes = 0;

        assert!((seen_count_is_zero_leaf().eval)(&facts));
        assert!((runtime_seen_is_zero_leaf().eval)(&facts));
        assert!((seen_ci_workflows_positive_leaf().eval)(&facts));
        assert!((has_seen_repo_root_runtime_config_leaf().eval)(&facts));
        assert!((seen_typescript_runtime_module_indexes_is_zero_leaf().eval)(&facts));
        assert!(!(runtime_seen_positive_leaf().eval)(&facts));
    }

    #[test]
    fn selection_predicates_reflect_intent_combinators() {
        let mut facts = SelectionFacts::default();
        facts.wants_examples = true;
        facts.wants_benchmarks = true;
        facts.wants_runtime_witnesses = false;
        facts.wants_entrypoint_build_flow = true;
        facts.wants_runtime_config_artifacts = false;
        facts.wants_contracts = true;
        facts.wants_test_witness_recall = false;
        facts.wants_example_or_bench_witnesses = true;
        facts.runtime_family_prefix_overlap = 2;

        assert!((wants_example_or_bench_witnesses_leaf().eval)(&facts));
        assert!((wants_runtime_or_entrypoint_build_flow_leaf().eval)(&facts));
        assert!((wants_runtime_config_or_entrypoint_build_flow_leaf().eval)(
            &facts
        ));
        assert!((wants_contractish_leaf().eval)(&facts));
        assert!((runtime_family_prefix_overlap_one_or_two_leaf().eval)(
            &facts
        ));
        assert!(!(runtime_family_prefix_overlap_at_least_four_leaf().eval)(
            &facts
        ));

        facts.wants_entrypoint_build_flow = false;
        assert!(!(wants_runtime_config_or_entrypoint_build_flow_leaf().eval)(&facts));
        facts.wants_runtime_config_artifacts = true;
        assert!((wants_runtime_config_or_entrypoint_build_flow_leaf().eval)(
            &facts
        ));
    }

    #[test]
    fn selection_predicates_handle_ambiguous_runtime_anchor_logic() {
        let mut facts = SelectionFacts::default();
        facts.class = crate::searcher::surfaces::HybridSourceClass::Tests;
        facts.runtime_family_prefix_overlap = 0;
        facts.is_runtime_anchor_test_support = true;
        facts.wants_runtime_companion_tests = true;
        facts.prefer_runtime_anchor_tests = false;

        assert!((class_is_tests_leaf().eval)(&facts));
        assert!((runtime_family_prefix_overlap_is_zero_leaf().eval)(&facts));
        assert!((is_runtime_anchor_test_support_leaf().eval)(&facts));
        assert!((wants_runtime_companion_tests_leaf().eval)(&facts));
        assert!(!(prefer_runtime_anchor_tests_leaf().eval)(&facts));
    }

    #[test]
    fn selection_predicates_cover_overlap_thresholds_and_count_states() {
        let mut facts = SelectionFacts::default();

        assert!(!(path_overlap_leaf().eval)(&facts));
        assert!(!(specific_witness_path_overlap_leaf().eval)(&facts));
        assert!(!(blade_specific_path_overlap_leaf().eval)(&facts));
        assert!(!(path_depth_at_least_four_leaf().eval)(&facts));
        assert!((path_depth_is_one_or_less_leaf().eval)(&facts));
        assert!((runtime_family_prefix_overlap_is_zero_leaf().eval)(&facts));
        assert!(!(runtime_family_prefix_overlap_at_least_four_leaf().eval)(
            &facts
        ));
        assert!(!(runtime_family_prefix_overlap_one_or_two_leaf().eval)(
            &facts
        ));
        assert!(!(seen_ci_workflows_positive_leaf().eval)(&facts));
        assert!(!(seen_example_support_positive_leaf().eval)(&facts));
        assert!(!(seen_bench_support_positive_leaf().eval)(&facts));
        assert!(!(seen_plain_test_support_positive_leaf().eval)(&facts));
        assert!(!(laravel_surface_seen_positive_leaf().eval)(&facts));

        facts.path_overlap = 1;
        facts.specific_witness_path_overlap = 1;
        facts.blade_specific_path_overlap = 1;
        facts.path_depth = 4;
        facts.runtime_family_prefix_overlap = 2;
        facts.seen_count = 1;
        facts.runtime_seen = 1;
        facts.seen_ci_workflows = 1;
        facts.seen_example_support = 1;
        facts.seen_bench_support = 1;
        facts.seen_plain_test_support = 1;
        facts.laravel_surface_seen = 1;

        assert!((path_overlap_leaf().eval)(&facts));
        assert!((specific_witness_path_overlap_leaf().eval)(&facts));
        assert!((blade_specific_path_overlap_leaf().eval)(&facts));
        assert!((path_depth_at_least_four_leaf().eval)(&facts));
        assert!(!(path_depth_is_one_or_less_leaf().eval)(&facts));
        assert!(!(runtime_family_prefix_overlap_is_zero_leaf().eval)(&facts));
        assert!(!(runtime_family_prefix_overlap_at_least_four_leaf().eval)(
            &facts
        ));
        assert!((runtime_family_prefix_overlap_one_or_two_leaf().eval)(
            &facts
        ));
        assert!((seen_ci_workflows_positive_leaf().eval)(&facts));
        assert!((seen_example_support_positive_leaf().eval)(&facts));
        assert!((seen_bench_support_positive_leaf().eval)(&facts));
        assert!((seen_plain_test_support_positive_leaf().eval)(&facts));
        assert!((laravel_surface_seen_positive_leaf().eval)(&facts));

        facts.runtime_family_prefix_overlap = 4;
        assert!((runtime_family_prefix_overlap_at_least_four_leaf().eval)(
            &facts
        ));
        assert!(!(runtime_family_prefix_overlap_one_or_two_leaf().eval)(
            &facts
        ));
        facts.runtime_family_prefix_overlap = 0;
        assert!((runtime_family_prefix_overlap_is_zero_leaf().eval)(&facts));
    }

    #[test]
    fn selection_predicates_cover_boolean_queriable_and_query_mix_states() {
        let mut facts = SelectionFacts::default();

        assert!(!(query_has_exact_terms_leaf().eval)(&facts));
        assert!(!(query_has_identifier_anchor_leaf().eval)(&facts));
        assert!(!(query_has_specific_blade_anchors_leaf().eval)(&facts));
        assert!(!(excerpt_has_build_flow_anchor_leaf().eval)(&facts));
        assert!(!(excerpt_has_test_double_anchor_leaf().eval)(&facts));
        assert!(!(query_mentions_cli_leaf().eval)(&facts));
        assert!(!(wants_mcp_runtime_surface_leaf().eval)(&facts));
        assert!(!(wants_runtime_companion_tests_leaf().eval)(&facts));
        assert!(!(prefer_runtime_anchor_tests_leaf().eval)(&facts));
        assert!(!(wants_language_locality_bias_leaf().eval)(&facts));
        assert!(!(candidate_language_known_leaf().eval)(&facts));
        assert!(!(matches_query_language_leaf().eval)(&facts));
        assert!(!(runtime_subtree_affinity_positive_leaf().eval)(&facts));
        assert!(!(runtime_subtree_affinity_at_least_two_leaf().eval)(&facts));

        facts.query_has_exact_terms = true;
        facts.query_has_identifier_anchor = true;
        facts.query_has_specific_blade_anchors = true;
        facts.excerpt_has_build_flow_anchor = true;
        facts.excerpt_has_test_double_anchor = true;
        facts.query_mentions_cli = true;
        facts.wants_mcp_runtime_surface = true;
        facts.wants_runtime_witnesses = true;
        facts.wants_entrypoint_build_flow = true;
        facts.wants_test_witness_recall = false;
        facts.runtime_seen = 1;
        facts.wants_contracts = true;
        facts.wants_error_taxonomy = true;
        facts.wants_language_locality_bias = true;
        facts.candidate_language_known = true;
        facts.matches_query_language = true;
        facts.runtime_subtree_affinity = 2;

        assert!((query_has_exact_terms_leaf().eval)(&facts));
        assert!((query_has_identifier_anchor_leaf().eval)(&facts));
        assert!((query_has_specific_blade_anchors_leaf().eval)(&facts));
        assert!((excerpt_has_build_flow_anchor_leaf().eval)(&facts));
        assert!((excerpt_has_test_double_anchor_leaf().eval)(&facts));
        assert!((query_mentions_cli_leaf().eval)(&facts));
        assert!((wants_mcp_runtime_surface_leaf().eval)(&facts));
        assert!((excerpt_has_test_double_anchor_leaf().eval)(&facts));
        assert!(!(wants_runtime_companion_tests_leaf().eval)(&facts));
        assert!(!(prefer_runtime_anchor_tests_leaf().eval)(&facts));
        assert!((wants_language_locality_bias_leaf().eval)(&facts));
        assert!((candidate_language_known_leaf().eval)(&facts));
        assert!((matches_query_language_leaf().eval)(&facts));
        assert!((runtime_subtree_affinity_positive_leaf().eval)(&facts));
        assert!((runtime_subtree_affinity_at_least_two_leaf().eval)(&facts));

        facts.wants_runtime_companion_tests = true;
        facts.prefer_runtime_anchor_tests = true;
        assert!((wants_runtime_companion_tests_leaf().eval)(&facts));
        assert!((prefer_runtime_anchor_tests_leaf().eval)(&facts));
        assert!((wants_contractish_leaf().eval)(&facts));

        facts.wants_runtime_companion_tests = true;
        facts.prefer_runtime_anchor_tests = false;
        facts.wants_test_witness_recall = true;
        assert!((wants_runtime_companion_tests_leaf().eval)(&facts));
        assert!(!(prefer_runtime_anchor_tests_leaf().eval)(&facts));
        assert!((wants_contractish_leaf().eval)(&facts));
    }

    #[test]
    fn selection_predicates_cover_class_and_surface_variants() {
        let mut facts = SelectionFacts::default();

        facts.class = crate::searcher::surfaces::HybridSourceClass::Documentation;
        assert!((class_is_documentation_leaf().eval)(&facts));
        assert!(!(class_is_readme_leaf().eval)(&facts));
        assert!(!(class_is_specs_leaf().eval)(&facts));

        facts.class = crate::searcher::surfaces::HybridSourceClass::Readme;
        assert!((class_is_readme_leaf().eval)(&facts));
        assert!(!(class_is_documentation_leaf().eval)(&facts));

        facts.class = crate::searcher::surfaces::HybridSourceClass::Specs;
        assert!((class_is_specs_leaf().eval)(&facts));
        assert!(!(class_is_runtime_leaf().eval)(&facts));
        assert!(!(class_is_support_leaf().eval)(&facts));
        assert!(!(class_is_tests_leaf().eval)(&facts));
        assert!(!(class_is_fixtures_leaf().eval)(&facts));

        facts.laravel_surface = Some(LaravelUiSurfaceClass::BladeView);
        facts.path_stem_is_main = true;
        facts.is_laravel_non_livewire_blade_view = true;
        facts.is_laravel_layout_blade_view = true;
        facts.is_laravel_bootstrap_entrypoint = true;
        facts.is_navigation_reference_doc = true;

        assert!((laravel_surface_is_blade_view_leaf().eval)(&facts));
        assert!((has_laravel_surface_leaf().eval)(&facts));
        assert!((path_stem_is_main_leaf().eval)(&facts));
        assert!((is_laravel_non_livewire_blade_view_leaf().eval)(&facts));
        assert!((is_laravel_layout_blade_view_leaf().eval)(&facts));
        assert!((is_laravel_bootstrap_entrypoint_leaf().eval)(&facts));
        assert!((is_navigation_reference_doc_leaf().eval)(&facts));
    }
}