SYMBOL INDEX (895 symbols across 23 files) FILE: llmfit-core/src/fit.rs type InferenceRuntime (line 7) | pub enum InferenceRuntime { method label (line 14) | pub fn label(&self) -> &'static str { type SortColumn (line 25) | pub enum SortColumn { method label (line 36) | pub fn label(&self) -> &str { method next (line 48) | pub fn next(&self) -> Self { type FitLevel (line 64) | pub enum FitLevel { type RunMode (line 74) | pub enum RunMode { type ScoreComponents (line 83) | pub struct ScoreComponents { type ModelFit (line 95) | pub struct ModelFit { method analyze (line 114) | pub fn analyze(model: &LlmModel, system: &SystemSpecs) -> Self { method analyze_with_context_limit (line 118) | pub fn analyze_with_context_limit( method analyze_with_forced_runtime (line 131) | pub fn analyze_with_forced_runtime( method analyze_inner (line 140) | fn analyze_inner( method fit_emoji (line 369) | pub fn fit_emoji(&self) -> &str { method fit_text (line 378) | pub fn fit_text(&self) -> &str { method runtime_text (line 387) | pub fn runtime_text(&self) -> &str { method run_mode_text (line 391) | pub fn run_mode_text(&self) -> &str { function score_fit (line 405) | fn score_fit( function cpu_path (line 450) | fn cpu_path( function moe_offload_path (line 478) | fn moe_offload_path( function moe_memory_for_quant (line 557) | fn moe_memory_for_quant(model: &LlmModel, quant: &str) -> Option<(f64, f... function best_quant_for_runtime_budget (line 573) | fn best_quant_for_runtime_budget( function backend_compatible (line 599) | pub fn backend_compatible(model: &LlmModel, system: &SystemSpecs) -> bool { function rank_models_by_fit (line 622) | pub fn rank_models_by_fit(models: Vec) -> Vec { function rank_models_by_fit_opts (line 626) | pub fn rank_models_by_fit_opts(models: Vec, installed_first: b... function rank_models_by_fit_opts_col (line 630) | pub fn rank_models_by_fit_opts_col( function estimate_tps (line 750) | fn estimate_tps( function compute_scores (line 864) | fn compute_scores( function quality_score (line 881) | fn quality_score(model: &LlmModel, quant: &str, use_case: UseCase) -> f64 { function speed_score (line 958) | fn speed_score(tps: f64, use_case: UseCase) -> f64 { function fit_score (line 968) | fn fit_score(required: f64, available: f64) -> f64 { function context_score (line 989) | fn context_score(model: &LlmModel, use_case: UseCase) -> f64 { function weighted_score (line 1007) | fn weighted_score(sc: ScoreComponents, use_case: UseCase) -> f64 { function test_model (line 1029) | fn test_model(param_count: &str, min_ram: f64, min_vram: Option) ->... function test_system (line 1052) | fn test_system(ram: f64, has_gpu: bool, vram: Option) -> SystemSpecs { function test_score_fit_too_tight (line 1082) | fn test_score_fit_too_tight() { function test_score_fit_gpu_perfect (line 1089) | fn test_score_fit_gpu_perfect() { function test_score_fit_gpu_good (line 1096) | fn test_score_fit_gpu_good() { function test_score_fit_gpu_marginal (line 1103) | fn test_score_fit_gpu_marginal() { function test_score_fit_cpu_caps_at_marginal (line 1110) | fn test_score_fit_cpu_caps_at_marginal() { function test_score_fit_cpu_offload_caps_at_good (line 1117) | fn test_score_fit_cpu_offload_caps_at_good() { function test_score_fit_moe_offload (line 1124) | fn test_score_fit_moe_offload() { function test_model_fit_gpu_path (line 1139) | fn test_model_fit_gpu_path() { function test_model_fit_cpu_only (line 1152) | fn test_model_fit_cpu_only() { function test_model_fit_cpu_offload (line 1165) | fn test_model_fit_cpu_offload() { function test_model_fit_unified_memory (line 1181) | fn test_model_fit_unified_memory() { function test_model_fit_too_tight (line 1194) | fn test_model_fit_too_tight() { function test_moe_offload_tries_lower_quantization (line 1205) | fn test_moe_offload_tries_lower_quantization() { function test_dense_model_uses_quant_in_path_selection (line 1237) | fn test_dense_model_uses_quant_in_path_selection() { function test_model_fit_utilization (line 1270) | fn test_model_fit_utilization() { function test_rank_models_by_fit (line 1290) | fn test_rank_models_by_fit() { function test_rank_models_separates_runnable_from_too_tight (line 1319) | fn test_rank_models_separates_runnable_from_too_tight() { function test_fit_score_sweet_spot (line 1348) | fn test_fit_score_sweet_spot() { function test_fit_score_under_utilized (line 1358) | fn test_fit_score_under_utilized() { function test_fit_score_tight (line 1366) | fn test_fit_score_tight() { function test_fit_score_exceeds_available (line 1374) | fn test_fit_score_exceeds_available() { function test_speed_score_normalized (line 1381) | fn test_speed_score_normalized() { function test_context_score (line 1396) | fn test_context_score() { function test_quality_score_by_params (line 1409) | fn test_quality_score_by_params() { function test_quality_score_quant_penalty (line 1424) | fn test_quality_score_quant_penalty() { function test_weighted_score_composition (line 1437) | fn test_weighted_score_composition() { function test_estimate_tps_mlx_faster_than_llamacpp (line 1460) | fn test_estimate_tps_mlx_faster_than_llamacpp() { function test_analyze_selects_mlx_on_apple_silicon (line 1488) | fn test_analyze_selects_mlx_on_apple_silicon() { function test_analyze_defaults_llamacpp_on_cuda (line 1501) | fn test_analyze_defaults_llamacpp_on_cuda() { function test_analyze_with_context_limit_reduces_memory_estimate (line 1510) | fn test_analyze_with_context_limit_reduces_memory_estimate() { function test_estimate_tps_run_mode_penalties (line 1528) | fn test_estimate_tps_run_mode_penalties() { function test_estimate_tps_moe_uses_active_parameters (line 1572) | fn test_estimate_tps_moe_uses_active_parameters() { function test_estimate_tps_moe_without_active_parameters_falls_back_to_total (line 1599) | fn test_estimate_tps_moe_without_active_parameters_falls_back_to_total() { function test_sort_by_tps (line 1630) | fn test_sort_by_tps() { function test_sort_by_release_date (line 1651) | fn test_sort_by_release_date() { function test_system_with_gpu (line 1685) | fn test_system_with_gpu(ram: f64, vram: f64, gpu_name: &str) -> SystemSp... function test_bandwidth_estimation_rtx4090_faster_than_rtx3060 (line 1703) | fn test_bandwidth_estimation_rtx4090_faster_than_rtx3060() { function test_bandwidth_estimation_rtx4090_27b_q4_realistic (line 1731) | fn test_bandwidth_estimation_rtx4090_27b_q4_realistic() { function test_bandwidth_estimation_t4_7b_f16_realistic (line 1750) | fn test_bandwidth_estimation_t4_7b_f16_realistic() { function test_bandwidth_estimation_unknown_gpu_uses_fallback (line 1769) | fn test_bandwidth_estimation_unknown_gpu_uses_fallback() { function test_bandwidth_estimation_cpu_only_ignores_bandwidth (line 1788) | fn test_bandwidth_estimation_cpu_only_ignores_bandwidth() { function test_prequantized_requires_cuda_or_rocm (line 1817) | fn test_prequantized_requires_cuda_or_rocm() { function test_awq_incompatible_on_volta_v100 (line 1847) | fn test_awq_incompatible_on_volta_v100() { function test_gptq_incompatible_on_volta_v100 (line 1858) | fn test_gptq_incompatible_on_volta_v100() { function test_awq_compatible_on_turing_and_newer (line 1868) | fn test_awq_compatible_on_turing_and_newer() { function test_awq_on_rocm_always_compatible (line 1891) | fn test_awq_on_rocm_always_compatible() { function test_awq_on_pascal_incompatible (line 1903) | fn test_awq_on_pascal_incompatible() { function test_gguf_on_volta_still_compatible (line 1914) | fn test_gguf_on_volta_still_compatible() { FILE: llmfit-core/src/hardware.rs type GpuBackend (line 6) | pub enum GpuBackend { method label (line 18) | pub fn label(&self) -> &'static str { type GpuInfo (line 34) | pub struct GpuInfo { type SystemSpecs (line 43) | pub struct SystemSpecs { method detect (line 63) | pub fn detect() -> Self { method detect_all_gpus (line 121) | fn detect_all_gpus(total_ram_gb: f64, cpu_name: &str) -> Vec { method detect_nvidia_gpus (line 258) | fn detect_nvidia_gpus() -> Vec { method try_nvidia_smi_with_addressing_mode (line 287) | fn try_nvidia_smi_with_addressing_mode() -> Option> { method parse_nvidia_smi_extended (line 306) | fn parse_nvidia_smi_extended(text: &str) -> Vec { method parse_nvidia_smi_list (line 374) | fn parse_nvidia_smi_list(text: &str) -> Vec { method detect_nvidia_gpu_sysfs_info (line 431) | fn detect_nvidia_gpu_sysfs_info() -> Option { method detect_amd_gpu_rocm_info (line 513) | fn detect_amd_gpu_rocm_info() -> Option { method detect_amd_gpu_sysfs_info (line 602) | fn detect_amd_gpu_sysfs_info() -> Option { method get_amd_gpu_name_lspci (line 671) | fn get_amd_gpu_name_lspci(slot_hints: &[String]) -> Option { method get_nvidia_gpu_name_lspci (line 703) | fn get_nvidia_gpu_name_lspci(slot_hints: &[String]) -> Option { method lspci_output (line 735) | fn lspci_output() -> Option { method extract_model_from_lspci_line (line 757) | fn extract_model_from_lspci_line(line: &str) -> Option { method detect_gpu_windows_info (line 793) | fn detect_gpu_windows_info() -> Vec { method detect_gpu_windows_wmic_list (line 817) | fn detect_gpu_windows_wmic_list() -> Vec { method parse_windows_gpu_list (line 868) | fn parse_windows_gpu_list(text: &str) -> Vec { method resolve_wmi_vram (line 906) | fn resolve_wmi_vram(raw_bytes: u64, name: &str) -> Option { method infer_gpu_backend (line 918) | fn infer_gpu_backend(name: &str) -> GpuBackend { method detect_intel_gpu (line 942) | fn detect_intel_gpu() -> Option { method detect_apple_gpu (line 1003) | fn detect_apple_gpu(total_ram_gb: f64) -> Option { method has_command (line 1032) | fn has_command(command: &str) -> bool { method detect_vulkan_gpu_info (line 1057) | fn detect_vulkan_gpu_info() -> Vec { method is_same_gpu_name (line 1095) | fn is_same_gpu_name(existing_name: &str, candidate_name: &str) -> bool { method normalize_gpu_name_for_dedupe (line 1100) | fn normalize_gpu_name_for_dedupe(name: &str) -> String { method parse_vulkan_device_names (line 1117) | fn parse_vulkan_device_names(text: &str) -> Vec { method is_software_vulkan_device (line 1151) | fn is_software_vulkan_device(name: &str) -> bool { method detect_ascend_npus (line 1160) | fn detect_ascend_npus() -> Vec { method available_ram_fallback (line 1221) | fn available_ram_fallback(sys: &System, total_bytes: u64, total_gb: f6... method available_ram_from_vm_stat (line 1239) | fn available_ram_from_vm_stat() -> Option { method parse_vm_stat_line (line 1283) | fn parse_vm_stat_line(line: &str, key: &str) -> Option { method detect_cpu_name (line 1295) | fn detect_cpu_name(sys: &System) -> String { method read_cpu_name_from_proc_cpuinfo (line 1316) | fn read_cpu_name_from_proc_cpuinfo() -> Option { method parse_cpu_name_from_cpuinfo (line 1329) | fn parse_cpu_name_from_cpuinfo(text: &str) -> Option { method read_android_soc_name (line 1347) | fn read_android_soc_name() -> Option { method with_gpu_memory_override (line 1376) | pub fn with_gpu_memory_override(mut self, vram_gb: f64) -> Self { method display (line 1411) | pub fn display(&self) { function parse_memory_size (line 1482) | pub fn parse_memory_size(s: &str) -> Option { function is_running_in_wsl (line 1507) | pub fn is_running_in_wsl() -> bool { function detect_running_in_wsl (line 1512) | fn detect_running_in_wsl() -> bool { function is_amd_unified_memory_apu (line 1537) | fn is_amd_unified_memory_apu(cpu_name: &str) -> bool { function read_proc_meminfo_total_gb (line 1553) | fn read_proc_meminfo_total_gb() -> Option { function gpu_memory_bandwidth_gbps (line 1579) | pub fn gpu_memory_bandwidth_gbps(name: &str) -> Option { function gpu_compute_capability (line 1878) | pub fn gpu_compute_capability(name: &str) -> Option<(u8, u8)> { function quant_min_compute_capability (line 1965) | pub fn quant_min_compute_capability(quantization: &str) -> Option<(u8, u... function estimate_vram_from_name (line 1977) | fn estimate_vram_from_name(name: &str) -> f64 { function test_parse_nvidia_smi_does_not_sum_multi_gpu_vram (line 2208) | fn test_parse_nvidia_smi_does_not_sum_multi_gpu_vram() { function test_parse_nvidia_smi_keeps_distinct_models (line 2222) | fn test_parse_nvidia_smi_keeps_distinct_models() { function test_parse_nvidia_smi_gb10_gets_vram_estimate (line 2232) | fn test_parse_nvidia_smi_gb10_gets_vram_estimate() { function test_estimate_vram_gb10 (line 2245) | fn test_estimate_vram_gb10() { function test_estimate_vram_rtx_professional (line 2251) | fn test_estimate_vram_rtx_professional() { function test_parse_extended_discrete_gpu_not_unified (line 2261) | fn test_parse_extended_discrete_gpu_not_unified() { function test_parse_extended_tegra_unified_memory (line 2277) | fn test_parse_extended_tegra_unified_memory() { function test_parse_extended_multi_gpu_discrete (line 2292) | fn test_parse_extended_multi_gpu_discrete() { function test_gpu_bandwidth_known_gpus (line 2303) | fn test_gpu_bandwidth_known_gpus() { function test_gpu_bandwidth_apple_silicon (line 2325) | fn test_gpu_bandwidth_apple_silicon() { function test_gpu_bandwidth_unknown_returns_none (line 2337) | fn test_gpu_bandwidth_unknown_returns_none() { function test_gpu_bandwidth_amd (line 2343) | fn test_gpu_bandwidth_amd() { function test_parse_cpu_name_from_cpuinfo_prefers_model_name (line 2355) | fn test_parse_cpu_name_from_cpuinfo_prefers_model_name() { function test_parse_cpu_name_from_cpuinfo_uses_hardware_fallback (line 2368) | fn test_parse_cpu_name_from_cpuinfo_uses_hardware_fallback() { function test_parse_vulkan_device_names_from_summary_output (line 2380) | fn test_parse_vulkan_device_names_from_summary_output() { function test_parse_vulkan_device_names_from_gpu_id_lines (line 2398) | fn test_parse_vulkan_device_names_from_gpu_id_lines() { function test_is_software_vulkan_device (line 2414) | fn test_is_software_vulkan_device() { function test_is_same_gpu_name_uses_normalized_exact_match (line 2423) | fn test_is_same_gpu_name_uses_normalized_exact_match() { function test_normalize_gpu_name_for_dedupe (line 2432) | fn test_normalize_gpu_name_for_dedupe() { function test_gpu_backend_labels (line 2442) | fn test_gpu_backend_labels() { function test_parse_memory_size_gb (line 2456) | fn test_parse_memory_size_gb() { function test_parse_memory_size_mb (line 2465) | fn test_parse_memory_size_mb() { function test_parse_memory_size_tb (line 2473) | fn test_parse_memory_size_tb() { function test_parse_memory_size_bare_number (line 2481) | fn test_parse_memory_size_bare_number() { function test_parse_memory_size_whitespace (line 2486) | fn test_parse_memory_size_whitespace() { function test_parse_memory_size_empty (line 2491) | fn test_parse_memory_size_empty() { function test_parse_memory_size_invalid_suffix (line 2497) | fn test_parse_memory_size_invalid_suffix() { function test_parse_memory_size_fractional (line 2503) | fn test_parse_memory_size_fractional() { function make_specs_no_gpu (line 2509) | fn make_specs_no_gpu() -> SystemSpecs { function make_specs_with_gpu (line 2526) | fn make_specs_with_gpu() -> SystemSpecs { function test_gpu_override_creates_synthetic_gpu_when_none (line 2550) | fn test_gpu_override_creates_synthetic_gpu_when_none() { function test_gpu_override_updates_existing_gpu (line 2561) | fn test_gpu_override_updates_existing_gpu() { function test_gpu_override_multi_gpu_scales_total (line 2570) | fn test_gpu_override_multi_gpu_scales_total() { function test_amd_unified_memory_apu_detection (line 2581) | fn test_amd_unified_memory_apu_detection() { function test_bandwidth_rtx_20_series (line 2596) | fn test_bandwidth_rtx_20_series() { function test_bandwidth_gtx_16_series (line 2610) | fn test_bandwidth_gtx_16_series() { function test_bandwidth_rtx_50_series (line 2624) | fn test_bandwidth_rtx_50_series() { function test_bandwidth_amd_rx_6000 (line 2654) | fn test_bandwidth_amd_rx_6000() { function test_bandwidth_nvidia_professional (line 2672) | fn test_bandwidth_nvidia_professional() { function test_bandwidth_apple_silicon_all (line 2688) | fn test_bandwidth_apple_silicon_all() { function test_bandwidth_amd_cdna (line 2720) | fn test_bandwidth_amd_cdna() { function test_bandwidth_amd_rdna4 (line 2738) | fn test_bandwidth_amd_rdna4() { function test_compute_capability_nvidia_generations (line 2752) | fn test_compute_capability_nvidia_generations() { function test_compute_capability_unknown_returns_none (line 2795) | fn test_compute_capability_unknown_returns_none() { function test_quant_min_compute_capability (line 2805) | fn test_quant_min_compute_capability() { FILE: llmfit-core/src/models.rs constant QUANT_HIERARCHY (line 7) | pub const QUANT_HIERARCHY: &[&str] = &["Q8_0", "Q6_K", "Q5_K_M", "Q4_K_M... constant MLX_QUANT_HIERARCHY (line 10) | pub const MLX_QUANT_HIERARCHY: &[&str] = &["mlx-8bit", "mlx-4bit"]; function quant_bpp (line 13) | pub fn quant_bpp(quant: &str) -> f64 { function quant_speed_multiplier (line 34) | pub fn quant_speed_multiplier(quant: &str) -> f64 { function quant_bytes_per_param (line 53) | pub fn quant_bytes_per_param(quant: &str) -> f64 { function quant_quality_penalty (line 71) | pub fn quant_quality_penalty(quant: &str) -> f64 { type Capability (line 93) | pub enum Capability { method label (line 99) | pub fn label(&self) -> &'static str { method all (line 106) | pub fn all() -> &'static [Capability] { method infer (line 111) | pub fn infer(model: &LlmModel) -> Vec { type ModelFormat (line 152) | pub enum ModelFormat { method is_prequantized (line 164) | pub fn is_prequantized(&self) -> bool { type UseCase (line 171) | pub enum UseCase { method label (line 181) | pub fn label(&self) -> &'static str { method from_model (line 193) | pub fn from_model(model: &LlmModel) -> Self { type LlmModel (line 217) | pub struct LlmModel { method is_mlx_model (line 263) | pub fn is_mlx_model(&self) -> bool { method is_prequantized (line 270) | pub fn is_prequantized(&self) -> bool { method quant_bpp (line 275) | fn quant_bpp(&self) -> f64 { method params_b (line 280) | pub fn params_b(&self) -> f64 { method estimate_memory_gb (line 298) | pub fn estimate_memory_gb(&self, quant: &str, ctx: u32) -> f64 { method best_quant_for_budget (line 311) | pub fn best_quant_for_budget(&self, budget_gb: f64, ctx: u32) -> Optio... method best_quant_for_budget_with (line 316) | pub fn best_quant_for_budget_with( method moe_active_vram_gb (line 344) | pub fn moe_active_vram_gb(&self) -> Option { method is_mlx_only (line 356) | pub fn is_mlx_only(&self) -> bool { method moe_offloaded_ram_gb (line 362) | pub fn moe_offloaded_ram_gb(&self) -> Option { type GgufSource (line 252) | pub struct GgufSource { type HfModelEntry (line 380) | struct HfModelEntry { function parse_parameter_count_hint (line 414) | fn parse_parameter_count_hint(parameter_count: &str) -> Option { function effective_parameters_raw (line 430) | fn effective_parameters_raw(entry: &HfModelEntry) -> Option { function option_max (line 436) | fn option_max(left: Option, right: Option) -... function hf_entry_rank (line 445) | fn hf_entry_rank(entry: &HfModelEntry) -> (u64, u64, usize, usize, u8, u... function merge_exact_name_entries (line 458) | fn merge_exact_name_entries( function dedupe_hf_entries (line 517) | fn dedupe_hf_entries(entries: Vec) -> Vec { constant HF_MODELS_JSON (line 534) | const HF_MODELS_JSON: &str = include_str!("../data/hf_models.json"); type ModelDatabase (line 536) | pub struct ModelDatabase { method new (line 547) | pub fn new() -> Self { method get_all_models (line 584) | pub fn get_all_models(&self) -> &Vec { method find_model (line 588) | pub fn find_model(&self, query: &str) -> Vec<&LlmModel> { method models_fitting_system (line 600) | pub fn models_fitting_system( method default (line 541) | fn default() -> Self { function test_mlx_quant_bpp_values (line 642) | fn test_mlx_quant_bpp_values() { function test_best_quant_with_mlx_hierarchy (line 652) | fn test_best_quant_with_mlx_hierarchy() { function test_quant_bpp (line 688) | fn test_quant_bpp() { function test_quant_speed_multiplier (line 699) | fn test_quant_speed_multiplier() { function test_quant_quality_penalty (line 709) | fn test_quant_quality_penalty() { function test_params_b_from_raw (line 723) | fn test_params_b_from_raw() { function test_params_b_from_string (line 748) | fn test_params_b_from_string() { function test_params_b_from_millions (line 773) | fn test_params_b_from_millions() { function test_estimate_memory_gb (line 798) | fn test_estimate_memory_gb() { function test_best_quant_for_budget (line 831) | fn test_best_quant_for_budget() { function test_moe_active_vram_gb (line 869) | fn test_moe_active_vram_gb() { function test_moe_offloaded_ram_gb (line 923) | fn test_moe_offloaded_ram_gb() { function test_use_case_from_model_coding (line 980) | fn test_use_case_from_model_coding() { function test_use_case_from_model_embedding (line 1005) | fn test_use_case_from_model_embedding() { function test_use_case_from_model_reasoning (line 1030) | fn test_use_case_from_model_reasoning() { function test_model_database_new (line 1059) | fn test_model_database_new() { function test_dedupe_hf_entries_merges_duplicate_metadata (line 1067) | fn test_dedupe_hf_entries_merges_duplicate_metadata() { function test_model_database_deduplicates_exact_name_collisions (line 1151) | fn test_model_database_deduplicates_exact_name_collisions() { function test_find_model (line 1185) | fn test_find_model() { function test_models_fitting_system (line 1203) | fn test_models_fitting_system() { function test_capability_infer_vision (line 1225) | fn test_capability_infer_vision() { function test_capability_infer_tool_use (line 1253) | fn test_capability_infer_tool_use() { function test_capability_infer_none (line 1280) | fn test_capability_infer_none() { function test_capability_preserves_explicit (line 1306) | fn test_capability_preserves_explicit() { function test_awq_gptq_quant_values (line 1333) | fn test_awq_gptq_quant_values() { function test_model_format_prequantized (line 1351) | fn test_model_format_prequantized() { function test_gguf_source_deserialization (line 1364) | fn test_gguf_source_deserialization() { function test_gguf_sources_default_to_empty (line 1372) | fn test_gguf_sources_default_to_empty() { function test_catalog_popular_models_have_gguf_sources (line 1389) | fn test_catalog_popular_models_have_gguf_sources() { function test_catalog_gguf_sources_have_valid_repos (line 1412) | fn test_catalog_gguf_sources_have_valid_repos() { function test_catalog_has_significant_gguf_coverage (line 1438) | fn test_catalog_has_significant_gguf_coverage() { FILE: llmfit-core/src/plan.rs constant SUPPORTED_QUANTS (line 5) | const SUPPORTED_QUANTS: &[&str] = &[ type PlanRequest (line 25) | pub struct PlanRequest { type HardwareEstimate (line 32) | pub struct HardwareEstimate { type PlanRunPath (line 40) | pub enum PlanRunPath { method label (line 47) | pub fn label(&self) -> &'static str { method run_mode (line 55) | fn run_mode(self) -> RunMode { type PathEstimate (line 65) | pub struct PathEstimate { type UpgradeDelta (line 76) | pub struct UpgradeDelta { type PlanCurrentStatus (line 86) | pub struct PlanCurrentStatus { type PlanEstimate (line 93) | pub struct PlanEstimate { function normalize_quant (line 107) | pub fn normalize_quant(quant: &str) -> Option { function estimate_tps (line 143) | fn estimate_tps( function estimate_tps_with_gpu (line 156) | fn estimate_tps_with_gpu( function fit_level_for (line 224) | fn fit_level_for( function minimum_cores_for_target (line 255) | fn minimum_cores_for_target( function default_gpu_backend (line 276) | fn default_gpu_backend(system: &SystemSpecs) -> GpuBackend { function evaluate_current (line 284) | fn evaluate_current( function build_path_estimate (line 389) | fn build_path_estimate( function estimate_model_plan (line 522) | pub fn estimate_model_plan( function resolve_model_selector (line 670) | pub fn resolve_model_selector<'a>( function test_model (line 714) | fn test_model() -> LlmModel { function test_specs (line 737) | fn test_specs() -> SystemSpecs { function test_normalize_quant (line 755) | fn test_normalize_quant() { function test_normalize_quant_all_supported (line 762) | fn test_normalize_quant_all_supported() { function test_normalize_quant_whitespace_handling (line 777) | fn test_normalize_quant_whitespace_handling() { function test_estimate_model_plan (line 784) | fn test_estimate_model_plan() { function test_estimate_model_plan_zero_context_errors (line 798) | fn test_estimate_model_plan_zero_context_errors() { function test_estimate_model_plan_negative_tps_errors (line 814) | fn test_estimate_model_plan_negative_tps_errors() { function test_estimate_model_plan_invalid_quant_errors (line 830) | fn test_estimate_model_plan_invalid_quant_errors() { function test_estimate_model_plan_uses_model_quant_when_none (line 842) | fn test_estimate_model_plan_uses_model_quant_when_none() { function test_estimate_model_plan_has_three_run_paths (line 853) | fn test_estimate_model_plan_has_three_run_paths() { function test_estimate_model_plan_gpu_path_feasible (line 867) | fn test_estimate_model_plan_gpu_path_feasible() { function test_fit_level_for_gpu_perfect (line 884) | fn test_fit_level_for_gpu_perfect() { function test_fit_level_for_gpu_good (line 890) | fn test_fit_level_for_gpu_good() { function test_fit_level_for_gpu_marginal (line 897) | fn test_fit_level_for_gpu_marginal() { function test_fit_level_for_too_tight (line 904) | fn test_fit_level_for_too_tight() { function test_fit_level_for_cpu_offload_caps_at_good (line 910) | fn test_fit_level_for_cpu_offload_caps_at_good() { function test_fit_level_for_cpu_only_always_marginal (line 916) | fn test_fit_level_for_cpu_only_always_marginal() { function test_plan_run_path_labels (line 924) | fn test_plan_run_path_labels() { function test_plan_run_path_to_run_mode (line 931) | fn test_plan_run_path_to_run_mode() { function test_estimate_tps_gpu_faster_than_cpu (line 940) | fn test_estimate_tps_gpu_faster_than_cpu() { function test_estimate_tps_cpu_offload_slower_than_gpu (line 954) | fn test_estimate_tps_cpu_offload_slower_than_gpu() { function test_estimate_tps_more_cores_helps (line 968) | fn test_estimate_tps_more_cores_helps() { function test_estimate_tps_with_known_gpu_uses_bandwidth (line 976) | fn test_estimate_tps_with_known_gpu_uses_bandwidth() { function test_minimum_cores_no_target_returns_default (line 1001) | fn test_minimum_cores_no_target_returns_default() { function test_minimum_cores_with_reachable_target (line 1009) | fn test_minimum_cores_with_reachable_target() { function test_minimum_cores_unreachable_target_returns_none (line 1023) | fn test_minimum_cores_unreachable_target_returns_none() { function test_default_gpu_backend_uses_system_when_gpu (line 1038) | fn test_default_gpu_backend_uses_system_when_gpu() { function test_default_gpu_backend_falls_back_to_cuda (line 1044) | fn test_default_gpu_backend_falls_back_to_cuda() { function test_evaluate_current_with_gpu (line 1053) | fn test_evaluate_current_with_gpu() { function test_evaluate_current_no_gpu_uses_cpu (line 1063) | fn test_evaluate_current_no_gpu_uses_cpu() { function test_evaluate_current_too_tight_when_no_memory (line 1075) | fn test_evaluate_current_too_tight_when_no_memory() { function test_build_path_estimate_gpu (line 1089) | fn test_build_path_estimate_gpu() { function test_build_path_estimate_cpu_offload_on_unified_is_infeasible (line 1100) | fn test_build_path_estimate_cpu_offload_on_unified_is_infeasible() { function test_build_path_estimate_cpu_only_no_vram (line 1117) | fn test_build_path_estimate_cpu_only_no_vram() { function test_resolve_model_selector (line 1129) | fn test_resolve_model_selector() { function test_resolve_model_selector_empty_errors (line 1136) | fn test_resolve_model_selector_empty_errors() { function test_resolve_model_selector_not_found (line 1144) | fn test_resolve_model_selector_not_found() { function test_resolve_model_selector_ambiguous (line 1152) | fn test_resolve_model_selector_ambiguous() { function test_resolve_model_selector_partial_match (line 1164) | fn test_resolve_model_selector_partial_match() { function test_plan_has_upgrade_deltas (line 1173) | fn test_plan_has_upgrade_deltas() { function test_normalize_awq_gptq_quants (line 1188) | fn test_normalize_awq_gptq_quants() { FILE: llmfit-core/src/providers.rs type ModelProvider (line 14) | pub trait ModelProvider { method name (line 16) | fn name(&self) -> &str; method is_available (line 19) | fn is_available(&self) -> bool; method installed_models (line 23) | fn installed_models(&self) -> HashSet; method start_pull (line 27) | fn start_pull(&self, model_tag: &str) -> Result; method name (line 195) | fn name(&self) -> &str { method is_available (line 199) | fn is_available(&self) -> bool { method installed_models (line 208) | fn installed_models(&self) -> HashSet { method start_pull (line 213) | fn start_pull(&self, model_tag: &str) -> Result { method name (line 414) | fn name(&self) -> &str { method is_available (line 418) | fn is_available(&self) -> bool { method installed_models (line 437) | fn installed_models(&self) -> HashSet { method start_pull (line 461) | fn start_pull(&self, model_tag: &str) -> Result { method name (line 956) | fn name(&self) -> &str { method is_available (line 960) | fn is_available(&self) -> bool { method installed_models (line 964) | fn installed_models(&self) -> HashSet { method start_pull (line 969) | fn start_pull(&self, model_tag: &str) -> Result { method name (line 1133) | fn name(&self) -> &str { method is_available (line 1137) | fn is_available(&self) -> bool { method installed_models (line 1146) | fn installed_models(&self) -> HashSet { method start_pull (line 1151) | fn start_pull(&self, model_tag: &str) -> Result { method name (line 1337) | fn name(&self) -> &str { method is_available (line 1341) | fn is_available(&self) -> bool { method installed_models (line 1350) | fn installed_models(&self) -> HashSet { method start_pull (line 1355) | fn start_pull(&self, model_tag: &str) -> Result { type PullHandle (line 32) | pub struct PullHandle { type PullEvent (line 38) | pub enum PullEvent { type OllamaProvider (line 51) | pub struct OllamaProvider { method new (line 93) | pub fn new() -> Self { method api_url (line 98) | fn api_url(&self, path: &str) -> String { method detect_with_installed (line 104) | pub fn detect_with_installed(&self) -> (bool, HashSet, usize) { method installed_models_counted (line 132) | pub fn installed_models_counted(&self) -> (HashSet, usize) { method has_remote_tag (line 158) | pub fn has_remote_tag(&self, model_tag: &str) -> bool { function normalize_ollama_host (line 55) | fn normalize_ollama_host(raw: &str) -> Option { method default (line 74) | fn default() -> Self { type TagsResponse (line 172) | struct TagsResponse { type OllamaModel (line 177) | struct OllamaModel { type PullStreamLine (line 183) | struct PullStreamLine { type MlxProvider (line 282) | pub struct MlxProvider { method new (line 307) | pub fn new() -> Self { method detect_with_installed (line 313) | pub fn detect_with_installed(&self) -> (bool, HashSet) { method default (line 287) | fn default() -> Self { function check_mlx_python (line 345) | fn check_mlx_python() -> bool { function is_likely_mlx_repo (line 357) | fn is_likely_mlx_repo(owner: &str, repo: &str) -> bool { function scan_hf_cache_for_mlx (line 368) | fn scan_hf_cache_for_mlx() -> HashSet { function dirs_hf_cache (line 400) | fn dirs_hf_cache() -> std::path::PathBuf { type LlamaCppProvider (line 524) | pub struct LlamaCppProvider { method new (line 547) | pub fn new() -> Self { method installed_models_counted (line 554) | pub fn installed_models_counted(&self) -> (HashSet, usize) { method models_dir (line 571) | pub fn models_dir(&self) -> &std::path::Path { method llama_cli_path (line 576) | pub fn llama_cli_path(&self) -> Option<&str> { method llama_server_path (line 581) | pub fn llama_server_path(&self) -> Option<&str> { method list_gguf_files (line 586) | pub fn list_gguf_files(&self) -> Vec { method search_hf_gguf (line 601) | pub fn search_hf_gguf(query: &str) -> Vec<(String, String)> { method list_repo_gguf_files (line 633) | pub fn list_repo_gguf_files(repo_id: &str) -> Vec<(String, u64)> { method select_best_gguf (line 652) | pub fn select_best_gguf(files: &[(String, u64)], budget_gb: f64) -> Op... method download_gguf (line 687) | pub fn download_gguf(&self, repo_id: &str, filename: &str) -> Result Self { function validate_gguf_filename (line 844) | fn validate_gguf_filename(filename: &str) -> Result<(), String> { function is_split_file (line 882) | fn is_split_file(filename: &str) -> bool { function parse_repo_gguf_entries (line 887) | fn parse_repo_gguf_entries(entries: Vec) -> Vec<(Stri... function llamacpp_models_dir (line 904) | fn llamacpp_models_dir() -> PathBuf { function find_binary (line 918) | fn find_binary(name: &str) -> Option { function encode (line 938) | pub fn encode(s: &str) -> String { type DockerModelRunnerProvider (line 1030) | pub struct DockerModelRunnerProvider { method new (line 1072) | pub fn new() -> Self { method models_url (line 1076) | fn models_url(&self) -> String { method detect_with_installed (line 1082) | pub fn detect_with_installed(&self) -> (bool, HashSet, usize) { method installed_models_counted (line 1115) | pub fn installed_models_counted(&self) -> (HashSet, usize) { function normalize_docker_mr_host (line 1034) | fn normalize_docker_mr_host(raw: &str) -> Option { method default (line 1052) | fn default() -> Self { type DockerModelList (line 1122) | struct DockerModelList { type DockerEngine (line 1127) | struct DockerEngine { type LmStudioProvider (line 1200) | pub struct LmStudioProvider { method new (line 1242) | pub fn new() -> Self { method models_url (line 1246) | fn models_url(&self) -> String { method download_url (line 1250) | fn download_url(&self) -> String { method download_status_url (line 1257) | fn download_status_url(&self) -> String { method detect_with_installed (line 1266) | pub fn detect_with_installed(&self) -> (bool, HashSet, usize) { method installed_models_counted (line 1295) | pub fn installed_models_counted(&self) -> (HashSet, usize) { function normalize_lmstudio_host (line 1204) | fn normalize_lmstudio_host(raw: &str) -> Option { method default (line 1222) | fn default() -> Self { type LmStudioModelList (line 1302) | struct LmStudioModelList { type LmStudioModel (line 1307) | struct LmStudioModel { type LmStudioDownloadResponse (line 1313) | struct LmStudioDownloadResponse { type LmStudioDownloadStatus (line 1325) | struct LmStudioDownloadStatus { function hf_name_to_lmstudio_candidates (line 1497) | pub fn hf_name_to_lmstudio_candidates(hf_name: &str) -> Vec { function is_model_installed_lmstudio (line 1520) | pub fn is_model_installed_lmstudio(hf_name: &str, installed: &HashSet bool { function lmstudio_pull_tag (line 1539) | pub fn lmstudio_pull_tag(hf_name: &str) -> Option { constant DOCKER_MODELS_JSON (line 1553) | const DOCKER_MODELS_JSON: &str = include_str!("../data/docker_models.jso... type DockerModelCatalog (line 1556) | struct DockerModelCatalog { type DockerModelEntry (line 1561) | struct DockerModelEntry { function docker_mr_catalog (line 1567) | fn docker_mr_catalog() -> &'static [(String, String)] { function has_docker_mr_mapping (line 1583) | pub fn has_docker_mr_mapping(hf_name: &str) -> bool { function docker_mr_pull_tag (line 1589) | pub fn docker_mr_pull_tag(hf_name: &str) -> Option { function hf_name_to_docker_mr_candidates (line 1600) | pub fn hf_name_to_docker_mr_candidates(hf_name: &str) -> Vec { function is_model_installed_docker_mr (line 1618) | pub fn is_model_installed_docker_mr(hf_name: &str, installed: &HashSet... function strip_gguf_quant_suffix (line 1641) | fn strip_gguf_quant_suffix(stem: &str) -> Option { constant LLAMACPP_GGUF_MAPPINGS (line 1661) | const LLAMACPP_GGUF_MAPPINGS: &[(&str, &str)] = &[ function lookup_gguf_repo (line 1788) | fn lookup_gguf_repo(hf_name: &str) -> Option<&'static str> { function hf_name_to_gguf_candidates (line 1801) | pub fn hf_name_to_gguf_candidates(hf_name: &str) -> Vec { function has_gguf_mapping (line 1817) | pub fn has_gguf_mapping(hf_name: &str) -> bool { function is_model_installed_llamacpp (line 1822) | pub fn is_model_installed_llamacpp(hf_name: &str, installed: &HashSet Option { function hf_repo_exists (line 1852) | pub fn hf_repo_exists(repo_id: &str) -> bool { function first_existing_gguf_repo (line 1863) | pub fn first_existing_gguf_repo(hf_name: &str) -> Option { function push_unique_candidate (line 1877) | fn push_unique_candidate(candidates: &mut Vec, candidate: String) { function strip_trailing_quant_suffix (line 1883) | fn strip_trailing_quant_suffix(name: &str) -> String { function normalize_mlx_repo_base (line 1892) | fn normalize_mlx_repo_base(repo_lower: &str) -> String { function strip_trailing_common_model_suffixes (line 1902) | fn strip_trailing_common_model_suffixes(name: &str) -> String { function explicit_mlx_repo_id (line 1920) | fn explicit_mlx_repo_id(hf_name: &str) -> Option { function hf_name_to_mlx_candidates (line 1935) | pub fn hf_name_to_mlx_candidates(hf_name: &str) -> Vec { function is_model_installed_mlx (line 2081) | pub fn is_model_installed_mlx(hf_name: &str, installed: &HashSet... function mlx_pull_tag (line 2087) | pub fn mlx_pull_tag(hf_name: &str) -> String { constant OLLAMA_MAPPINGS (line 2115) | const OLLAMA_MAPPINGS: &[(&str, &str)] = &[ function lookup_ollama_tag (line 2252) | fn lookup_ollama_tag(hf_name: &str) -> Option<&'static str> { function hf_name_to_ollama_candidates (line 2266) | pub fn hf_name_to_ollama_candidates(hf_name: &str) -> Vec { function has_ollama_mapping (line 2275) | pub fn has_ollama_mapping(hf_name: &str) -> bool { function ollama_installed_matches_candidate (line 2279) | fn ollama_installed_matches_candidate(installed_name: &str, candidate: &... function is_model_installed (line 2296) | pub fn is_model_installed(hf_name: &str, installed: &HashSet) ->... function ollama_pull_tag (line 2307) | pub fn ollama_pull_tag(hf_name: &str) -> Option { function test_hf_name_to_mlx_candidates (line 2316) | fn test_hf_name_to_mlx_candidates() { function test_hf_name_to_mlx_candidates_qwen35 (line 2334) | fn test_hf_name_to_mlx_candidates_qwen35() { function test_hf_name_to_mlx_candidates_llama4 (line 2341) | fn test_hf_name_to_mlx_candidates_llama4() { function test_hf_name_to_mlx_candidates_gemma3 (line 2348) | fn test_hf_name_to_mlx_candidates_gemma3() { function test_hf_name_to_mlx_fallback_generates_mlx_infix_candidates (line 2355) | fn test_hf_name_to_mlx_fallback_generates_mlx_infix_candidates() { function test_hf_name_to_mlx_candidates_normalizes_explicit_mlx_repo (line 2364) | fn test_hf_name_to_mlx_candidates_normalizes_explicit_mlx_repo() { function test_mlx_pull_tag_prefers_explicit_repo_id (line 2379) | fn test_mlx_pull_tag_prefers_explicit_repo_id() { function test_mlx_cache_scan_parsing (line 2388) | fn test_mlx_cache_scan_parsing() { function test_is_model_installed_mlx (line 2405) | fn test_is_model_installed_mlx() { function test_is_model_installed_mlx_with_owner_prefixed_repo_id (line 2420) | fn test_is_model_installed_mlx_with_owner_prefixed_repo_id() { function test_qwen_coder_14b_matches_coder_entry (line 2431) | fn test_qwen_coder_14b_matches_coder_entry() { function test_qwen_base_does_not_match_coder (line 2448) | fn test_qwen_base_does_not_match_coder() { function test_installed_variant_suffix_matches_ollama_candidate (line 2463) | fn test_installed_variant_suffix_matches_ollama_candidate() { function test_candidates_for_coder_model (line 2476) | fn test_candidates_for_coder_model() { function test_candidates_for_base_model (line 2482) | fn test_candidates_for_base_model() { function test_llama_mapping (line 2488) | fn test_llama_mapping() { function test_deepseek_coder_mapping (line 2494) | fn test_deepseek_coder_mapping() { function test_normalize_ollama_host_with_scheme (line 2501) | fn test_normalize_ollama_host_with_scheme() { function test_normalize_ollama_host_without_scheme (line 2509) | fn test_normalize_ollama_host_without_scheme() { function test_normalize_ollama_host_rejects_unsupported_scheme (line 2517) | fn test_normalize_ollama_host_rejects_unsupported_scheme() { function test_validate_gguf_filename_valid (line 2525) | fn test_validate_gguf_filename_valid() { function test_validate_gguf_filename_traversal (line 2531) | fn test_validate_gguf_filename_traversal() { function test_validate_gguf_filename_absolute (line 2538) | fn test_validate_gguf_filename_absolute() { function test_validate_gguf_filename_bad_extension (line 2544) | fn test_validate_gguf_filename_bad_extension() { function test_validate_gguf_filename_empty (line 2551) | fn test_validate_gguf_filename_empty() { function test_validate_gguf_filename_subdirectory (line 2556) | fn test_validate_gguf_filename_subdirectory() { function test_validate_gguf_filename_rejects_non_basename_forms (line 2561) | fn test_validate_gguf_filename_rejects_non_basename_forms() { function test_parse_repo_gguf_entries_filters_unsafe_paths (line 2570) | fn test_parse_repo_gguf_entries_filters_unsafe_paths() { function test_hf_name_to_gguf_candidates_generates_common_patterns (line 2588) | fn test_hf_name_to_gguf_candidates_generates_common_patterns() { function test_hf_name_to_gguf_candidates_strips_owner (line 2615) | fn test_hf_name_to_gguf_candidates_strips_owner() { function test_lookup_gguf_repo_known_mappings (line 2628) | fn test_lookup_gguf_repo_known_mappings() { function test_lookup_gguf_repo_unknown_returns_none (line 2635) | fn test_lookup_gguf_repo_unknown_returns_none() { function test_has_gguf_mapping_matches_known_models (line 2640) | fn test_has_gguf_mapping_matches_known_models() { function test_gguf_candidates_fallback_covers_major_providers (line 2646) | fn test_gguf_candidates_fallback_covers_major_providers() { function test_gguf_candidates_known_mapping_returns_single (line 2657) | fn test_gguf_candidates_known_mapping_returns_single() { function test_select_best_gguf_prefers_higher_quality (line 2667) | fn test_select_best_gguf_prefers_higher_quality() { function test_select_best_gguf_respects_budget (line 2680) | fn test_select_best_gguf_respects_budget() { function test_select_best_gguf_nothing_fits (line 2698) | fn test_select_best_gguf_nothing_fits() { function test_select_best_gguf_skips_split_files (line 2705) | fn test_select_best_gguf_skips_split_files() { function test_select_best_gguf_empty_list (line 2724) | fn test_select_best_gguf_empty_list() { function test_is_split_file (line 2732) | fn test_is_split_file() { function test_urlencoding_ascii (line 2741) | fn test_urlencoding_ascii() { function test_urlencoding_special_chars (line 2747) | fn test_urlencoding_special_chars() { function test_urlencoding_empty (line 2754) | fn test_urlencoding_empty() { function test_is_model_installed_llamacpp_exact (line 2761) | fn test_is_model_installed_llamacpp_exact() { function test_is_model_installed_llamacpp_stripped_suffixes (line 2771) | fn test_is_model_installed_llamacpp_stripped_suffixes() { function test_is_model_installed_llamacpp_not_installed (line 2781) | fn test_is_model_installed_llamacpp_not_installed() { function test_gguf_pull_tag_known (line 2792) | fn test_gguf_pull_tag_known() { function test_gguf_pull_tag_unknown (line 2799) | fn test_gguf_pull_tag_unknown() { function test_has_ollama_mapping_known (line 2806) | fn test_has_ollama_mapping_known() { function test_has_ollama_mapping_unknown (line 2812) | fn test_has_ollama_mapping_unknown() { function test_ollama_pull_tag_known (line 2819) | fn test_ollama_pull_tag_known() { function test_ollama_pull_tag_unknown (line 2825) | fn test_ollama_pull_tag_unknown() { function test_mlx_pull_tag_prefers_4bit (line 2832) | fn test_mlx_pull_tag_prefers_4bit() { function test_mlx_pull_tag_fallback (line 2838) | fn test_mlx_pull_tag_fallback() { function test_ollama_installed_matches_exact (line 2846) | fn test_ollama_installed_matches_exact() { function test_ollama_installed_matches_variant_suffix (line 2854) | fn test_ollama_installed_matches_variant_suffix() { function test_ollama_installed_no_match (line 2862) | fn test_ollama_installed_no_match() { function test_parse_repo_gguf_entries_valid (line 2872) | fn test_parse_repo_gguf_entries_valid() { function test_parse_repo_gguf_entries_missing_size_defaults_to_zero (line 2884) | fn test_parse_repo_gguf_entries_missing_size_defaults_to_zero() { function test_parse_repo_gguf_entries_skips_non_gguf (line 2892) | fn test_parse_repo_gguf_entries_skips_non_gguf() { function test_hf_name_to_mlx_candidates_bare_model_name (line 2906) | fn test_hf_name_to_mlx_candidates_bare_model_name() { function test_hf_name_to_mlx_candidates_no_duplicates (line 2913) | fn test_hf_name_to_mlx_candidates_no_duplicates() { function test_hf_name_to_ollama_candidates_unknown_returns_empty (line 2927) | fn test_hf_name_to_ollama_candidates_unknown_returns_empty() { function test_hf_name_to_ollama_candidates_multiple_models (line 2933) | fn test_hf_name_to_ollama_candidates_multiple_models() { function test_docker_mr_catalog_parses (line 2943) | fn test_docker_mr_catalog_parses() { function test_has_docker_mr_mapping_known (line 2950) | fn test_has_docker_mr_mapping_known() { function test_has_docker_mr_mapping_unknown (line 2956) | fn test_has_docker_mr_mapping_unknown() { function test_docker_mr_pull_tag_returns_ai_prefixed (line 2961) | fn test_docker_mr_pull_tag_returns_ai_prefixed() { function test_docker_mr_candidates_includes_ai_prefix (line 2968) | fn test_docker_mr_candidates_includes_ai_prefix() { function test_docker_mr_candidates_unknown_returns_empty (line 2974) | fn test_docker_mr_candidates_unknown_returns_empty() { function test_is_model_installed_docker_mr_exact (line 2980) | fn test_is_model_installed_docker_mr_exact() { function test_is_model_installed_docker_mr_variant_suffix (line 2992) | fn test_is_model_installed_docker_mr_variant_suffix() { function test_is_model_installed_docker_mr_not_installed (line 3002) | fn test_is_model_installed_docker_mr_not_installed() { function test_normalize_docker_mr_host_with_scheme (line 3011) | fn test_normalize_docker_mr_host_with_scheme() { function test_normalize_docker_mr_host_without_scheme (line 3019) | fn test_normalize_docker_mr_host_without_scheme() { function test_normalize_docker_mr_host_rejects_unsupported_scheme (line 3027) | fn test_normalize_docker_mr_host_rejects_unsupported_scheme() { FILE: llmfit-desktop/build.rs function main (line 1) | fn main() { FILE: llmfit-desktop/src/main.rs type GpuInfoJs (line 12) | struct GpuInfoJs { type SystemInfo (line 21) | struct SystemInfo { type ModelFitInfo (line 31) | struct ModelFitInfo { type PullStatus (line 50) | struct PullStatus { type AppState (line 57) | struct AppState { function get_system_specs (line 63) | fn get_system_specs() -> Result { function get_model_fits (line 87) | fn get_model_fits() -> Result, String> { function start_pull (line 135) | fn start_pull(model_tag: String, state: State<'_, AppState>) -> Result) -> Result { function is_ollama_available (line 184) | fn is_ollama_available(state: State<'_, AppState>) -> bool { function main (line 188) | fn main() { FILE: llmfit-desktop/ui/app.js function esc (line 9) | function esc(s) { function loadSpecs (line 15) | async function loadSpecs() { function fitClass (line 61) | function fitClass(level) { function modeClass (line 70) | function modeClass(mode) { function showModal (line 79) | function showModal(fit) { function closeModal (line 169) | function closeModal() { function pullModel (line 177) | async function pullModel(name) { function renderModels (line 219) | function renderModels(fits) { function applyFilters (line 249) | function applyFilters() { function loadModels (line 263) | async function loadModels() { function init (line 287) | async function init() { FILE: llmfit-tui/build.rs function main (line 5) | fn main() { function collect_files (line 33) | fn collect_files(dir: &Path, files: &mut Vec) { function generate_assets_from_dist (line 47) | fn generate_assets_from_dist(dist_dir: &Path, files: &[PathBuf]) -> Stri... function generate_fallback_assets (line 74) | fn generate_fallback_assets() -> String { function content_type_for_path (line 102) | fn content_type_for_path(path: &Path) -> &'static str { FILE: llmfit-tui/src/display.rs type ModelRow (line 9) | struct ModelRow { function display_all_models (line 34) | pub fn display_all_models(models: &[LlmModel]) { function display_model_fits (line 59) | pub fn display_model_fits(fits: &[ModelFit]) { function display_model_detail (line 99) | pub fn display_model_detail(fit: &ModelFit) { function display_model_diff (line 214) | pub fn display_model_diff(fits: &[ModelFit], sort_label: &str) { function print_metric_row (line 337) | fn print_metric_row(metric: &str, values: Vec, metric_width: usi... function format_with_delta (line 345) | fn format_with_delta(value: String, delta: f64) -> String { function truncate_to_width (line 352) | fn truncate_to_width(input: &str, width: usize) -> String { function display_search_results (line 364) | pub fn display_search_results(models: &[&LlmModel], query: &str) { function display_json_system (line 407) | pub fn display_json_system(specs: &SystemSpecs) { function display_json_fits (line 418) | pub fn display_json_fits(specs: &SystemSpecs, fits: &[ModelFit]) { function display_json_diff_fits (line 431) | pub fn display_json_diff_fits(specs: &SystemSpecs, fits: &[ModelFit]) { function system_json (line 447) | fn system_json(specs: &SystemSpecs) -> serde_json::Value { function fit_to_json (line 477) | fn fit_to_json(fit: &ModelFit) -> serde_json::Value { function round1 (line 511) | fn round1(v: f64) -> f64 { function round2 (line 515) | fn round2(v: f64) -> f64 { function display_model_plan (line 519) | pub fn display_model_plan(plan: &PlanEstimate) { function display_json_plan (line 589) | pub fn display_json_plan(plan: &PlanEstimate) { FILE: llmfit-tui/src/main.rs constant DEFAULT_DASHBOARD_HOST (line 19) | const DEFAULT_DASHBOARD_HOST: &str = "0.0.0.0"; constant DEFAULT_DASHBOARD_PORT (line 20) | const DEFAULT_DASHBOARD_PORT: u16 = 8787; type SortArg (line 23) | enum SortArg { method from (line 46) | fn from(value: SortArg) -> Self { type FitArg (line 60) | enum FitArg { type Cli (line 95) | struct Cli { type Commands (line 135) | enum Commands { function detect_specs (line 581) | fn detect_specs(memory_override: &Option) -> SystemSpecs { function resolve_context_limit (line 599) | fn resolve_context_limit(max_context: Option) -> Option { function dashboard_pid_path (line 619) | fn dashboard_pid_path() -> std::path::PathBuf { function write_dashboard_pid (line 623) | fn write_dashboard_pid(pid: u32) { type DashboardGuard (line 627) | struct DashboardGuard { method drop (line 632) | fn drop(&mut self) { function dashboard_target_from_env (line 638) | fn dashboard_target_from_env() -> (String, u16) { function dashboard_reachable (line 662) | fn dashboard_reachable(host: &str, port: u16) -> bool { function ensure_dashboard_available (line 672) | fn ensure_dashboard_available( function run_fit (line 746) | fn run_fit( function fit_matches_filter (line 798) | fn fit_matches_filter(fit: &ModelFit, filter: FitArg) -> bool { function find_name_index_by_selector (line 809) | fn find_name_index_by_selector( function find_fit_index_by_selector (line 858) | fn find_fit_index_by_selector(fits: &[ModelFit], selector: &str) -> Resu... function run_diff (line 862) | fn run_diff( function run_tui (line 934) | fn run_tui(memory_override: &Option, context_limit: Option)... function draw_boot_screen (line 978) | fn draw_boot_screen( function run_recommend (line 1012) | fn run_recommend( function run_download (line 1133) | fn run_download( function run_hf_search (line 1314) | fn run_hf_search(query: &str, limit: usize) { function run_model (line 1338) | fn run_model(model: &str, server: bool, port: u16, ngl: i32, ctx_size: u... function run_plan (line 1440) | fn run_plan( function main (line 1469) | fn main() { function mock_fit (line 1663) | fn mock_fit(name: &str, fit_level: FitLevel) -> ModelFit { function fit_filter_runnable_excludes_too_tight (line 1708) | fn fit_filter_runnable_excludes_too_tight() { function selector_prefers_exact_match (line 1716) | fn selector_prefers_exact_match() { function selector_errors_on_ambiguous_partial (line 1726) | fn selector_errors_on_ambiguous_partial() { function generic_selector_prefers_exact_match_for_models (line 1736) | fn generic_selector_prefers_exact_match_for_models() { FILE: llmfit-tui/src/serve_api.rs type AppState (line 25) | struct AppState { type ModelsQuery (line 34) | struct ModelsQuery { type NodeInfo (line 51) | struct NodeInfo { type ApiEnvelope (line 57) | struct ApiEnvelope { type ApiError (line 67) | struct ApiError { method bad_request (line 73) | fn bad_request(message: impl Into) -> Self { method internal (line 80) | fn internal(message: impl Into) -> Self { method into_response (line 89) | fn into_response(self) -> Response { type ApiResult (line 100) | type ApiResult = Result; function run_serve (line 102) | pub fn run_serve( function build_router (line 161) | fn build_router(state: Arc) -> Router { function health (line 174) | async fn health(State(state): State>) -> Json>) -> Json Response { function web_asset (line 198) | async fn web_asset(Path(path): Path) -> Response { function spa_fallback (line 203) | async fn spa_fallback(Path(path): Path) -> Response { function serve_web_path (line 210) | fn serve_web_path(path: &str) -> Response { function find_web_asset (line 230) | fn find_web_asset(path: &str) -> Option<&'static EmbeddedAsset> { function models (line 234) | async fn models( function top_models (line 261) | async fn top_models( function model_by_name (line 288) | async fn model_by_name( function filtered_fits (line 319) | fn filtered_fits( type RuntimeFilter (line 390) | enum RuntimeFilter { function parse_sort (line 397) | fn parse_sort(raw: Option<&str>) -> Result { function parse_min_fit (line 416) | fn parse_min_fit(raw: Option<&str>) -> Result { function parse_runtime (line 432) | fn parse_runtime(raw: Option<&str>) -> Result { function parse_force_runtime (line 451) | fn parse_force_runtime( function parse_use_case (line 469) | fn parse_use_case(raw: Option<&str>) -> Result, ApiError> { function fit_at_least (line 490) | fn fit_at_least(actual: FitLevel, minimum: FitLevel) -> bool { function active_filters_json (line 500) | fn active_filters_json(query: &ModelsQuery, top_only: bool) -> serde_jso... function fit_level_code (line 516) | fn fit_level_code(fit_level: FitLevel) -> &'static str { function run_mode_code (line 525) | fn run_mode_code(run_mode: llmfit_core::fit::RunMode) -> &'static str { function runtime_code (line 534) | fn runtime_code(runtime: InferenceRuntime) -> &'static str { function system_json (line 542) | fn system_json(specs: &SystemSpecs) -> serde_json::Value { function fit_to_json (line 572) | fn fit_to_json(fit: &ModelFit) -> serde_json::Value { function round1 (line 608) | fn round1(v: f64) -> f64 { function round2 (line 612) | fn round2(v: f64) -> f64 { function detect_specs (line 617) | fn detect_specs(memory_override: &Option) -> SystemSpecs { function test_state (line 638) | fn test_state() -> Arc { function test_router (line 649) | fn test_router() -> Router { function find_asset_path_with_ext (line 653) | fn find_asset_path_with_ext(ext: &str) -> Option<&'static EmbeddedAsset> { function run_async (line 659) | fn run_async(future: impl Future) -> T { function root_serves_index_html (line 668) | fn root_serves_index_html() { function assets_route_serves_embedded_file_with_content_type (line 684) | fn assets_route_serves_embedded_file_with_content_type() { function unknown_non_api_routes_fallback_to_index (line 712) | fn unknown_non_api_routes_fallback_to_index() { function existing_api_route_response_shape_is_preserved (line 733) | fn existing_api_route_response_shape_is_preserved() { function unknown_api_paths_do_not_fallback_to_html (line 754) | fn unknown_api_paths_do_not_fallback_to_html() { FILE: llmfit-tui/src/theme.rs type Theme (line 7) | pub enum Theme { method label (line 21) | pub fn label(&self) -> &'static str { method next (line 36) | pub fn next(&self) -> Self { method colors (line 51) | pub fn colors(&self) -> ThemeColors { method config_path (line 67) | fn config_path() -> Option { method save (line 80) | pub fn save(&self) { method load (line 90) | pub fn load() -> Self { method from_label (line 97) | fn from_label(s: &str) -> Self { type ThemeColors (line 114) | pub struct ThemeColors { function default_colors (line 155) | fn default_colors() -> ThemeColors { function dracula_colors (line 194) | fn dracula_colors() -> ThemeColors { function solarized_colors (line 231) | fn solarized_colors() -> ThemeColors { function nord_colors (line 268) | fn nord_colors() -> ThemeColors { function monokai_colors (line 305) | fn monokai_colors() -> ThemeColors { function gruvbox_colors (line 342) | fn gruvbox_colors() -> ThemeColors { function catppuccin_latte_colors (line 379) | fn catppuccin_latte_colors() -> ThemeColors { function catppuccin_frappe_colors (line 417) | fn catppuccin_frappe_colors() -> ThemeColors { function catppuccin_macchiato_colors (line 455) | fn catppuccin_macchiato_colors() -> ThemeColors { function catppuccin_mocha_colors (line 493) | fn catppuccin_mocha_colors() -> ThemeColors { FILE: llmfit-tui/src/tui_app.rs type InputMode (line 16) | pub enum InputMode { type PlanField (line 32) | pub enum PlanField { method next (line 39) | fn next(self) -> Self { method prev (line 47) | fn prev(self) -> Self { type FitFilter (line 57) | pub enum FitFilter { method label (line 67) | pub fn label(&self) -> &str { method next (line 78) | pub fn next(&self) -> Self { type AvailabilityFilter (line 92) | pub enum AvailabilityFilter { method label (line 99) | pub fn label(&self) -> &str { method next (line 107) | pub fn next(&self) -> Self { type DownloadProvider (line 117) | pub enum DownloadProvider { type DownloadCapability (line 126) | pub enum DownloadCapability { constant DL_OLLAMA (line 132) | pub const DL_OLLAMA: u8 = 0b0001; constant DL_LLAMACPP (line 133) | pub const DL_LLAMACPP: u8 = 0b0010; constant DL_DOCKER (line 134) | pub const DL_DOCKER: u8 = 0b0100; constant DL_LMSTUDIO (line 135) | pub const DL_LMSTUDIO: u8 = 0b1000; type ActivePullProvider (line 138) | enum ActivePullProvider { method label (line 147) | fn label(self) -> &'static str { type App (line 158) | pub struct App { method with_specs_and_context (line 278) | pub fn with_specs_and_context(specs: SystemSpecs, context_limit: Optio... method apply_filters (line 484) | pub fn apply_filters(&mut self) { method selected_fit (line 644) | pub fn selected_fit(&self) -> Option<&ModelFit> { method move_up (line 650) | pub fn move_up(&mut self) { method move_down (line 658) | pub fn move_down(&mut self) { method page_up (line 666) | pub fn page_up(&mut self) { method page_down (line 672) | pub fn page_down(&mut self) { method half_page_up (line 680) | pub fn half_page_up(&mut self) { method half_page_down (line 685) | pub fn half_page_down(&mut self) { method home (line 692) | pub fn home(&mut self) { method end (line 697) | pub fn end(&mut self) { method cycle_fit_filter (line 704) | pub fn cycle_fit_filter(&mut self) { method cycle_availability_filter (line 709) | pub fn cycle_availability_filter(&mut self) { method cycle_sort_column (line 714) | pub fn cycle_sort_column(&mut self) { method cycle_theme (line 720) | pub fn cycle_theme(&mut self) { method enter_search (line 725) | pub fn enter_search(&mut self) { method exit_search (line 729) | pub fn exit_search(&mut self) { method search_input (line 733) | pub fn search_input(&mut self, c: char) { method search_backspace (line 739) | pub fn search_backspace(&mut self) { method search_delete (line 747) | pub fn search_delete(&mut self) { method clear_search (line 754) | pub fn clear_search(&mut self) { method toggle_detail (line 760) | pub fn toggle_detail(&mut self) { method mark_selected_for_compare (line 766) | pub fn mark_selected_for_compare(&mut self) { method clear_compare_mark (line 775) | pub fn clear_compare_mark(&mut self) { method selected_compare_pair (line 781) | pub fn selected_compare_pair(&self) -> Option<(&ModelFit, &ModelFit)> { method toggle_compare_view (line 791) | pub fn toggle_compare_view(&mut self) { method open_plan_mode (line 810) | pub fn open_plan_mode(&mut self) { method close_plan_mode (line 829) | pub fn close_plan_mode(&mut self) { method plan_next_field (line 837) | pub fn plan_next_field(&mut self) { method plan_prev_field (line 842) | pub fn plan_prev_field(&mut self) { method plan_cursor_left (line 847) | pub fn plan_cursor_left(&mut self) { method plan_cursor_right (line 853) | pub fn plan_cursor_right(&mut self) { method plan_input (line 860) | pub fn plan_input(&mut self, c: char) { method plan_backspace (line 891) | pub fn plan_backspace(&mut self) { method plan_delete (line 904) | pub fn plan_delete(&mut self) { method plan_clear_field (line 913) | pub fn plan_clear_field(&mut self) { method refresh_plan_estimate (line 919) | pub fn refresh_plan_estimate(&mut self) { method plan_model_name (line 977) | pub fn plan_model_name(&self) -> Option<&str> { method open_provider_popup (line 983) | pub fn open_provider_popup(&mut self) { method close_provider_popup (line 988) | pub fn close_provider_popup(&mut self) { method open_use_case_popup (line 992) | pub fn open_use_case_popup(&mut self) { method close_use_case_popup (line 997) | pub fn close_use_case_popup(&mut self) { method provider_popup_up (line 1001) | pub fn provider_popup_up(&mut self) { method provider_popup_down (line 1007) | pub fn provider_popup_down(&mut self) { method provider_popup_toggle (line 1013) | pub fn provider_popup_toggle(&mut self) { method provider_popup_select_all (line 1021) | pub fn provider_popup_select_all(&mut self) { method use_case_popup_up (line 1030) | pub fn use_case_popup_up(&mut self) { method use_case_popup_down (line 1036) | pub fn use_case_popup_down(&mut self) { method use_case_popup_toggle (line 1042) | pub fn use_case_popup_toggle(&mut self) { method use_case_popup_select_all (line 1050) | pub fn use_case_popup_select_all(&mut self) { method open_capability_popup (line 1059) | pub fn open_capability_popup(&mut self) { method close_capability_popup (line 1063) | pub fn close_capability_popup(&mut self) { method capability_popup_up (line 1067) | pub fn capability_popup_up(&mut self) { method capability_popup_down (line 1073) | pub fn capability_popup_down(&mut self) { method capability_popup_toggle (line 1079) | pub fn capability_popup_toggle(&mut self) { method capability_popup_select_all (line 1087) | pub fn capability_popup_select_all(&mut self) { method enter_visual_mode (line 1098) | pub fn enter_visual_mode(&mut self) { method exit_visual_mode (line 1103) | pub fn exit_visual_mode(&mut self) { method visual_range (line 1108) | pub fn visual_range(&self) -> Option> { method visual_selection_count (line 1115) | pub fn visual_selection_count(&self) -> usize { method visual_compare (line 1122) | pub fn visual_compare(&mut self) { method close_multi_compare (line 1144) | pub fn close_multi_compare(&mut self) { method multi_compare_scroll_left (line 1149) | pub fn multi_compare_scroll_left(&mut self) { method multi_compare_scroll_right (line 1155) | pub fn multi_compare_scroll_right(&mut self) { method enter_select_mode (line 1165) | pub fn enter_select_mode(&mut self) { method exit_select_mode (line 1169) | pub fn exit_select_mode(&mut self) { method select_column_left (line 1173) | pub fn select_column_left(&mut self) { method select_column_right (line 1179) | pub fn select_column_right(&mut self) { method activate_select_column_filter (line 1186) | pub fn activate_select_column_filter(&mut self) { method set_or_toggle_sort (line 1218) | fn set_or_toggle_sort(&mut self, col: SortColumn) { method close_quant_popup (line 1230) | pub fn close_quant_popup(&mut self) { method quant_popup_up (line 1234) | pub fn quant_popup_up(&mut self) { method quant_popup_down (line 1240) | pub fn quant_popup_down(&mut self) { method quant_popup_toggle (line 1246) | pub fn quant_popup_toggle(&mut self) { method quant_popup_select_all (line 1253) | pub fn quant_popup_select_all(&mut self) { method close_run_mode_popup (line 1264) | pub fn close_run_mode_popup(&mut self) { method run_mode_popup_up (line 1268) | pub fn run_mode_popup_up(&mut self) { method run_mode_popup_down (line 1274) | pub fn run_mode_popup_down(&mut self) { method run_mode_popup_toggle (line 1280) | pub fn run_mode_popup_toggle(&mut self) { method run_mode_popup_select_all (line 1288) | pub fn run_mode_popup_select_all(&mut self) { method close_params_bucket_popup (line 1299) | pub fn close_params_bucket_popup(&mut self) { method params_bucket_popup_up (line 1303) | pub fn params_bucket_popup_up(&mut self) { method params_bucket_popup_down (line 1309) | pub fn params_bucket_popup_down(&mut self) { method params_bucket_popup_toggle (line 1315) | pub fn params_bucket_popup_toggle(&mut self) { method params_bucket_popup_select_all (line 1323) | pub fn params_bucket_popup_select_all(&mut self) { method toggle_installed_first (line 1332) | pub fn toggle_installed_first(&mut self) { method re_sort (line 1338) | fn re_sort(&mut self) { method start_download (line 1353) | pub fn start_download(&mut self) { method format_no_download_message (line 1401) | fn format_no_download_message( method start_mlx_download (line 1423) | fn start_mlx_download(&mut self, model_name: String) { method start_download_with_provider (line 1444) | fn start_download_with_provider(&mut self, model_name: String, provide... method start_ollama_download (line 1454) | fn start_ollama_download(&mut self, model_name: String) { method start_llamacpp_download_for_model (line 1474) | fn start_llamacpp_download_for_model(&mut self, model_name: String) { method start_docker_mr_download (line 1502) | fn start_docker_mr_download(&mut self, model_name: String) { method start_lmstudio_download (line 1521) | fn start_lmstudio_download(&mut self, model_name: String) { method tick_pull (line 1541) | pub fn tick_pull(&mut self) { method available_download_providers (line 1593) | fn available_download_providers( method open_download_provider_popup (line 1623) | fn open_download_provider_popup(&mut self, model_name: String, options... method close_download_provider_popup (line 1631) | pub fn close_download_provider_popup(&mut self) { method download_provider_popup_up (line 1639) | pub fn download_provider_popup_up(&mut self) { method download_provider_popup_down (line 1645) | pub fn download_provider_popup_down(&mut self) { method confirm_download_provider_selection (line 1651) | pub fn confirm_download_provider_selection(&mut self) { method refresh_installed (line 1673) | pub fn refresh_installed(&mut self) { method download_capability_for (line 1707) | pub fn download_capability_for(&self, model_name: &str) -> DownloadCap... method enqueue_capability_probes_for_visible (line 1714) | pub fn enqueue_capability_probes_for_visible(&mut self, window: usize) { method enqueue_capability_probe (line 1729) | fn enqueue_capability_probe(&mut self, model_name: String, has_catalog... method tick_download_capability (line 1771) | fn tick_download_capability(&mut self) { method active_plan_input (line 1784) | fn active_plan_input(&self) -> &String { method active_plan_input_mut (line 1792) | fn active_plan_input_mut(&mut self) -> &mut String { function command_exists (line 1801) | fn command_exists(name: &str) -> bool { FILE: llmfit-tui/src/tui_events.rs function handle_events (line 7) | pub fn handle_events(app: &mut App) -> std::io::Result { function handle_normal_mode (line 37) | fn handle_normal_mode(app: &mut App, key: KeyEvent) { function handle_visual_mode (line 140) | fn handle_visual_mode(app: &mut App, key: KeyEvent) { function handle_select_mode (line 165) | fn handle_select_mode(app: &mut App, key: KeyEvent) { function handle_search_mode (line 185) | fn handle_search_mode(app: &mut App, key: KeyEvent) { function handle_provider_popup_mode (line 206) | fn handle_provider_popup_mode(app: &mut App, key: KeyEvent) { function handle_plan_mode (line 221) | fn handle_plan_mode(app: &mut App, key: KeyEvent) { function handle_use_case_popup_mode (line 238) | fn handle_use_case_popup_mode(app: &mut App, key: KeyEvent) { function handle_capability_popup_mode (line 253) | fn handle_capability_popup_mode(app: &mut App, key: KeyEvent) { function handle_download_provider_popup_mode (line 268) | fn handle_download_provider_popup_mode(app: &mut App, key: KeyEvent) { function handle_quant_popup_mode (line 278) | fn handle_quant_popup_mode(app: &mut App, key: KeyEvent) { function handle_run_mode_popup_mode (line 293) | fn handle_run_mode_popup_mode(app: &mut App, key: KeyEvent) { function handle_params_bucket_popup_mode (line 308) | fn handle_params_bucket_popup_mode(app: &mut App, key: KeyEvent) { FILE: llmfit-tui/src/tui_ui.rs function draw (line 21) | pub fn draw(frame: &mut Frame, app: &mut App) { function draw_system_bar (line 75) | fn draw_system_bar(frame: &mut Frame, app: &App, area: Rect, tc: &ThemeC... function draw_search_and_filters (line 238) | fn draw_search_and_filters(frame: &mut Frame, app: &App, area: Rect, tc:... function fit_color (line 450) | fn fit_color(level: FitLevel, tc: &ThemeColors) -> Color { function fit_indicator (line 459) | fn fit_indicator(level: FitLevel) -> &'static str { function pull_indicator (line 469) | fn pull_indicator(percent: Option, tick: u64) -> String { function draw_table (line 490) | fn draw_table(frame: &mut Frame, app: &mut App, area: Rect, tc: &ThemeCo... function draw_compare (line 724) | fn draw_compare(frame: &mut Frame, app: &App, area: Rect, tc: &ThemeColo... type CompareMetrics (line 902) | struct CompareMetrics { function compare_badges (line 915) | fn compare_badges(fit: &ModelFit) -> String { function render_compare_panel (line 933) | fn render_compare_panel( function draw_multi_compare (line 1034) | fn draw_multi_compare(frame: &mut Frame, app: &App, area: Rect, tc: &The... function truncate_str (line 1338) | fn truncate_str(s: &str, max_len: usize) -> String { function draw_detail (line 1346) | fn draw_detail(frame: &mut Frame, app: &App, area: Rect, tc: &ThemeColor... function draw_plan (line 1816) | fn draw_plan(frame: &mut Frame, app: &App, area: Rect, tc: &ThemeColors) { function draw_provider_popup (line 2015) | fn draw_provider_popup(frame: &mut Frame, app: &App, tc: &ThemeColors) { function draw_use_case_popup (line 2090) | fn draw_use_case_popup(frame: &mut Frame, app: &App, tc: &ThemeColors) { function draw_capability_popup (line 2173) | fn draw_capability_popup(frame: &mut Frame, app: &App, tc: &ThemeColors) { function draw_download_provider_popup (line 2256) | fn draw_download_provider_popup(frame: &mut Frame, app: &App, tc: &Theme... function status_keys_and_mode (line 2314) | fn status_keys_and_mode(app: &App) -> (String, String) { function draw_status_bar (line 2412) | fn draw_status_bar(frame: &mut Frame, app: &App, area: Rect, tc: &ThemeC... function draw_quant_popup (line 2466) | fn draw_quant_popup(frame: &mut Frame, app: &App, tc: &ThemeColors) { function draw_run_mode_popup (line 2537) | fn draw_run_mode_popup(frame: &mut Frame, app: &App, tc: &ThemeColors) { function draw_params_bucket_popup (line 2612) | fn draw_params_bucket_popup(frame: &mut Frame, app: &App, tc: &ThemeColo... FILE: llmfit-web/src/App.jsx constant THEME_KEY (line 4) | const THEME_KEY = 'llmfit-theme'; constant FIT_OPTIONS (line 6) | const FIT_OPTIONS = [ constant RUNTIME_OPTIONS (line 14) | const RUNTIME_OPTIONS = [ constant USE_CASE_OPTIONS (line 21) | const USE_CASE_OPTIONS = [ constant LIMIT_OPTIONS (line 31) | const LIMIT_OPTIONS = [ constant SORT_OPTIONS (line 40) | const SORT_OPTIONS = [ function initialTheme (line 50) | function initialTheme() { function round (line 63) | function round(value, digits = 1) { function fitClass (line 70) | function fitClass(code) { function modeClass (line 74) | function modeClass(code) { function SystemCard (line 78) | function SystemCard({ label, value, detail }) { function MetricBar (line 88) | function MetricBar({ label, value }) { function fitRank (line 103) | function fitRank(level) { function applyClientFitFilter (line 118) | function applyClientFitFilter(models, minFit) { function App (line 134) | function App() { FILE: llmfit-web/src/App.test.jsx function jsonResponse (line 4) | function jsonResponse(payload, { ok = true, status = 200 } = {}) { FILE: llmfit-web/src/api.js constant DEFAULT_FILTERS (line 1) | const DEFAULT_FILTERS = { function trimOrEmpty (line 11) | function trimOrEmpty(value) { function buildModelsQuery (line 15) | function buildModelsQuery(filters) { function parseJsonOrThrow (line 61) | async function parseJsonOrThrow(response) { function fetchSystemInfo (line 77) | async function fetchSystemInfo(signal) { function fetchModels (line 82) | async function fetchModels(filters, signal) { FILE: scripts/scrape_docker_models.py function fetch_docker_hub_models (line 157) | def fetch_docker_hub_models() -> list[str]: function fetch_tags_for_model (line 181) | def fetch_tags_for_model(model_name: str) -> list[str]: function ollama_tag_to_docker_repo (line 194) | def ollama_tag_to_docker_repo(ollama_tag: str) -> str: function lookup_ollama_tag (line 202) | def lookup_ollama_tag(hf_name: str) -> str | None: function main (line 212) | def main(): FILE: scripts/scrape_hf_models.py function _auth_headers (line 27) | def _auth_headers() -> dict[str, str]: function fetch_model_info (line 309) | def fetch_model_info(repo_id: str) -> dict | None: function format_param_count (line 328) | def format_param_count(total_params: int) -> str: function estimate_ram (line 340) | def estimate_ram(total_params: int, quant: str) -> tuple[float, float]: function estimate_vram (line 358) | def estimate_vram(total_params: int, quant: str) -> float: function detect_moe (line 367) | def detect_moe(repo_id: str, config: dict | None, architecture: str, function estimate_active_params (line 405) | def estimate_active_params(total_params: int, num_experts: int, function infer_use_case (line 419) | def infer_use_case(repo_id: str, pipeline_tag: str | None, config: dict ... function infer_context_length (line 437) | def infer_context_length(config: dict | None) -> int: function fetch_config_json (line 469) | def fetch_config_json(repo_id: str) -> dict | None: function extract_provider (line 480) | def extract_provider(repo_id: str) -> str: function infer_capabilities (line 509) | def infer_capabilities(repo_id: str, pipeline_tag: str | None, use_case:... function detect_quant_format (line 545) | def detect_quant_format(repo_id: str, config: dict | None) -> tuple[str,... function _detect_format_from_name (line 594) | def _detect_format_from_name(repo_id: str) -> tuple[str, str]: function scrape_model (line 612) | def scrape_model(repo_id: str) -> dict | None: function _load_gguf_cache (line 691) | def _load_gguf_cache() -> dict: function _save_gguf_cache (line 703) | def _save_gguf_cache(cache: dict): function _cache_entry_fresh (line 710) | def _cache_entry_fresh(entry: dict) -> bool: function _model_gguf_repo_candidates (line 720) | def _model_gguf_repo_candidates(repo_id: str) -> list[tuple[str, str]]: function check_gguf_repo_exists (line 735) | def check_gguf_repo_exists(repo_id: str) -> bool: function enrich_gguf_sources (line 748) | def enrich_gguf_sources(models: list[dict]) -> int: function discover_trending_models (line 819) | def discover_trending_models(limit: int = 30, min_downloads: int = 10000... function main (line 890) | def main(): FILE: scripts/test_api.py function _http_json (line 27) | def _http_json(url: str, timeout: float = 10.0) -> Tuple[int, Dict[str, ... function _assert (line 44) | def _assert(condition: bool, message: str) -> None: function _expect_keys (line 49) | def _expect_keys(obj: Dict[str, Any], keys: List[str], path: str) -> None: function test_health (line 54) | def test_health(base_url: str) -> None: function test_system (line 63) | def test_system(base_url: str) -> None: function test_models_envelope_and_limit (line 74) | def test_models_envelope_and_limit(base_url: str) -> None: function test_top_endpoint_excludes_too_tight (line 83) | def test_top_endpoint_excludes_too_tight(base_url: str) -> None: function test_filters_runtime_and_use_case (line 91) | def test_filters_runtime_and_use_case(base_url: str) -> None: function test_models_shape (line 100) | def test_models_shape(base_url: str) -> None: function test_name_lookup (line 129) | def test_name_lookup(base_url: str) -> None: function test_invalid_filter_returns_400 (line 153) | def test_invalid_filter_returns_400(base_url: str) -> None: function test_sort_score_desc (line 159) | def test_sort_score_desc(base_url: str) -> None: function wait_for_health (line 176) | def wait_for_health(base_url: str, timeout_s: float = 30.0) -> None: function spawn_server (line 189) | def spawn_server(base_url: str, project_root: str) -> subprocess.Popen: function run_all_tests (line 217) | def run_all_tests(base_url: str) -> None: function main (line 235) | def main() -> int: FILE: scripts/verify_models.py function check_url (line 30) | def check_url(url: str) -> int: function load_hf_models (line 46) | def load_hf_models() -> list[str]: function verify_hf (line 53) | def verify_hf(models: list[str]) -> list[str]: function parse_ollama_tags (line 73) | def parse_ollama_tags() -> list[str]: function verify_ollama (line 100) | def verify_ollama(tags: list[str]) -> list[str]: function main (line 120) | def main():