SYMBOL INDEX (2153 symbols across 201 files) FILE: src-tauri/build.rs function main (line 1) | fn main() { FILE: src-tauri/src/commands/autostart.rs function toggle_auto_launch (line 5) | pub async fn toggle_auto_launch( function is_auto_launch_enabled (line 36) | pub async fn is_auto_launch_enabled(app: tauri::AppHandle) -> Result Self { method ensure_manager (line 20) | pub async fn ensure_manager(&self) -> Result<(), String> { function cloudflared_check (line 32) | pub async fn cloudflared_check( function cloudflared_install (line 54) | pub async fn cloudflared_install( function cloudflared_start (line 69) | pub async fn cloudflared_start( function cloudflared_stop (line 85) | pub async fn cloudflared_stop( function cloudflared_get_status (line 100) | pub async fn cloudflared_get_status( FILE: src-tauri/src/commands/mod.rs function list_accounts (line 21) | pub async fn list_accounts() -> Result, String> { function add_account (line 27) | pub async fn add_account( function delete_account (line 53) | pub async fn delete_account( function delete_accounts (line 71) | pub async fn delete_accounts( function reorder_accounts (line 97) | pub async fn reorder_accounts( function switch_account (line 117) | pub async fn switch_account( function get_current_account (line 139) | pub async fn get_current_account() -> Result, String> { function export_accounts (line 159) | pub async fn export_accounts(account_ids: Vec) -> Result Result Result { function list_device_versions (line 295) | pub async fn list_device_versions( function restore_device_version (line 303) | pub async fn restore_device_version( function delete_device_version (line 312) | pub async fn delete_device_version(account_id: String, version_id: Strin... function open_device_folder (line 318) | pub async fn open_device_folder(app: tauri::AppHandle) -> Result<(), Str... function load_config (line 331) | pub async fn load_config() -> Result { function save_config (line 337) | pub async fn save_config( function start_oauth_login (line 398) | pub async fn start_oauth_login(app_handle: tauri::AppHandle) -> Result Resul... function prepare_oauth_url (line 442) | pub async fn prepare_oauth_url(app_handle: tauri::AppHandle) -> Result Result<(), String> { function submit_oauth_code (line 457) | pub async fn submit_oauth_code(code: String, state: Option) -> R... function import_v1_accounts (line 465) | pub async fn import_v1_accounts( function import_from_db (line 483) | pub async fn import_from_db( function import_custom_db (line 508) | pub async fn import_custom_db( function sync_account_from_db (line 533) | pub async fn sync_account_from_db( function validate_path (line 569) | fn validate_path(path: &str) -> Result<(), String> { function save_text_file (line 599) | pub async fn save_text_file(path: String, content: String) -> Result<(),... function read_text_file (line 606) | pub async fn read_text_file(path: String) -> Result { function clear_log_cache (line 613) | pub async fn clear_log_cache() -> Result<(), String> { function clear_antigravity_cache (line 620) | pub async fn clear_antigravity_cache() -> Result Result, String> { function open_data_folder (line 635) | pub async fn open_data_folder() -> Result<(), String> { function get_data_dir_path (line 669) | pub async fn get_data_dir_path() -> Result { function show_main_window (line 676) | pub async fn show_main_window(window: tauri::Window) -> Result<(), Strin... function set_window_theme (line 682) | pub async fn set_window_theme(window: tauri::Window, theme: String) -> R... function get_antigravity_path (line 696) | pub async fn get_antigravity_path(bypass_config: Option) -> Result... function get_antigravity_args (line 717) | pub async fn get_antigravity_args() -> Result, String> { function check_for_updates (line 729) | pub async fn check_for_updates() -> Result { function should_check_updates (line 735) | pub async fn should_check_updates() -> Result { function update_last_check_time (line 743) | pub async fn update_last_check_time() -> Result<(), String> { function check_homebrew_installation (line 750) | pub async fn check_homebrew_installation() -> Result { function brew_upgrade_cask (line 756) | pub async fn brew_upgrade_cask() -> Result { function get_update_settings (line 764) | pub async fn get_update_settings() -> Result Result { function warm_up_account (line 875) | pub async fn warm_up_account(account_id: String) -> Result ... function get_http_api_settings (line 940) | pub async fn get_http_api_settings() -> Result Result Result Result Result Result Self { type AdminServerInstance (line 28) | pub struct AdminServerInstance { type ProxyServiceInstance (line 35) | pub struct ProxyServiceInstance { function start_proxy_service (line 56) | pub async fn start_proxy_service( type StartingGuard (line 71) | struct StartingGuard(Arc); method drop (line 73) | fn drop(&mut self) { function internal_start_proxy_service (line 79) | pub async fn internal_start_proxy_service( function ensure_admin_server (line 211) | pub async fn ensure_admin_server( function stop_proxy_service (line 283) | pub async fn stop_proxy_service(state: State<'_, ProxyServiceState>) -> ... function get_proxy_status (line 302) | pub async fn get_proxy_status(state: State<'_, ProxyServiceState>) -> Re... function get_proxy_stats (line 345) | pub async fn get_proxy_stats(state: State<'_, ProxyServiceState>) -> Res... function get_proxy_logs (line 356) | pub async fn get_proxy_logs( function set_proxy_monitor_enabled (line 370) | pub async fn set_proxy_monitor_enabled( function clear_proxy_logs (line 383) | pub async fn clear_proxy_logs(state: State<'_, ProxyServiceState>) -> Re... function get_proxy_logs_paginated (line 393) | pub async fn get_proxy_logs_paginated( function get_proxy_log_detail (line 402) | pub async fn get_proxy_log_detail(log_id: String) -> Result Result { function export_proxy_logs (line 414) | pub async fn export_proxy_logs(file_path: String) -> Result String { function reload_proxy_accounts (line 471) | pub async fn reload_proxy_accounts(state: State<'_, ProxyServiceState>) ... function update_model_mapping (line 494) | pub async fn update_model_mapping( function join_base_url (line 515) | fn join_base_url(base: &str, path: &str) -> String { function extract_model_ids (line 525) | fn extract_model_ids(value: &serde_json::Value) -> Vec { function fetch_zai_models (line 575) | pub async fn fetch_zai_models( function get_proxy_scheduling_config (line 636) | pub async fn get_proxy_scheduling_config( function update_proxy_scheduling_config (line 649) | pub async fn update_proxy_scheduling_config( function clear_proxy_session_bindings (line 664) | pub async fn clear_proxy_session_bindings( function set_preferred_account (line 681) | pub async fn set_preferred_account( function get_preferred_account (line 720) | pub async fn get_preferred_account( function clear_proxy_rate_limit (line 733) | pub async fn clear_proxy_rate_limit( function clear_all_proxy_rate_limits (line 747) | pub async fn clear_all_proxy_rate_limits( function check_proxy_health (line 761) | pub async fn check_proxy_health( function get_proxy_pool_config (line 781) | pub async fn get_proxy_pool_config( FILE: src-tauri/src/commands/proxy_pool.rs function bind_account_proxy (line 7) | pub async fn bind_account_proxy( function unbind_account_proxy (line 22) | pub async fn unbind_account_proxy( function get_account_proxy_binding (line 37) | pub async fn get_account_proxy_binding( function get_all_account_bindings (line 51) | pub async fn get_all_account_bindings( FILE: src-tauri/src/commands/security.rs type IpAccessLogQuery (line 9) | pub struct IpAccessLogQuery { type IpAccessLogResponse (line 17) | pub struct IpAccessLogResponse { type AddBlacklistRequest (line 24) | pub struct AddBlacklistRequest { type AddWhitelistRequest (line 32) | pub struct AddWhitelistRequest { type IpStatsResponse (line 38) | pub struct IpStatsResponse { function get_ip_access_logs (line 49) | pub async fn get_ip_access_logs( function get_ip_stats (line 69) | pub async fn get_ip_stats() -> Result { function clear_ip_access_logs (line 83) | pub async fn clear_ip_access_logs() -> Result<(), String> { function get_ip_blacklist (line 91) | pub async fn get_ip_blacklist() -> Result Result<(), ... function clear_ip_blacklist (line 130) | pub async fn clear_ip_blacklist() -> Result<(), String> { function check_ip_in_blacklist (line 141) | pub async fn check_ip_in_blacklist(ip: String) -> Result { function get_ip_whitelist (line 149) | pub async fn get_ip_whitelist() -> Result Result<(), ... function clear_ip_whitelist (line 186) | pub async fn clear_ip_whitelist() -> Result<(), String> { function check_ip_in_whitelist (line 197) | pub async fn check_ip_in_whitelist(ip: String) -> Result { function get_security_config (line 205) | pub async fn get_security_config( function update_security_config (line 222) | pub async fn update_security_config( function get_ip_token_stats (line 254) | pub async fn get_ip_token_stats( function is_valid_ip_pattern (line 267) | fn is_valid_ip_pattern(pattern: &str) -> bool { function is_valid_ip (line 292) | fn is_valid_ip(ip: &str) -> bool { function test_valid_ip_patterns (line 312) | fn test_valid_ip_patterns() { function test_invalid_ip_patterns (line 321) | fn test_invalid_ip_patterns() { FILE: src-tauri/src/commands/user_token.rs type CreateTokenRequest (line 5) | pub struct CreateTokenRequest { type UpdateTokenRequest (line 16) | pub struct UpdateTokenRequest { function list_user_tokens (line 29) | pub async fn list_user_tokens() -> Result, String> { function create_user_token (line 35) | pub async fn create_user_token(request: CreateTokenRequest) -> Result Result<(), String> { function renew_user_token (line 69) | pub async fn renew_user_token(id: String, expires_type: String) -> Resul... function get_token_ip_bindings (line 75) | pub async fn get_token_ip_bindings(token_id: String) -> Result Result { FILE: src-tauri/src/constants.rs constant VERSION_URL (line 5) | const VERSION_URL: &str = "https://antigravity-auto-updater-974169037036... constant CHANGELOG_URL (line 8) | const CHANGELOG_URL: &str = "https://antigravity.google/changelog"; constant KNOWN_STABLE_VERSION (line 14) | const KNOWN_STABLE_VERSION: &str = "4.1.30"; constant KNOWN_STABLE_ELECTRON (line 15) | const KNOWN_STABLE_ELECTRON: &str = "39.2.3"; constant KNOWN_STABLE_CHROME (line 16) | const KNOWN_STABLE_CHROME: &str = "132.0.6834.160"; function parse_version (line 25) | fn parse_version(text: &str) -> Option { function compare_semver (line 31) | fn compare_semver(v1: &str, v2: &str) -> std::cmp::Ordering { type VersionSource (line 50) | enum VersionSource { type VersionConfig (line 61) | struct VersionConfig { function try_fetch_remote_version (line 70) | fn try_fetch_remote_version() -> Option { function resolve_version_config (line 122) | fn resolve_version_config() -> (VersionConfig, VersionSource) { function get_current_version (line 190) | pub fn get_current_version() -> String { function get_default_user_agent (line 196) | pub fn get_default_user_agent() -> String { function test_parse_version_from_updater_response (line 238) | fn test_parse_version_from_updater_response() { function test_parse_version_simple (line 244) | fn test_parse_version_simple() { function test_parse_version_invalid (line 251) | fn test_parse_version_invalid() { function test_parse_version_with_suffix (line 258) | fn test_parse_version_with_suffix() { function test_compare_semver (line 265) | fn test_compare_semver() { function test_known_stable_floor_is_up_to_date (line 274) | fn test_known_stable_floor_is_up_to_date() { function test_old_local_version_uses_floor (line 285) | fn test_old_local_version_uses_floor() { function test_newer_local_version_takes_priority (line 299) | fn test_newer_local_version_takes_priority() { FILE: src-tauri/src/error.rs type AppError (line 5) | pub enum AppError { method from (line 32) | fn from(err: reqwest::Error) -> Self { method from (line 39) | fn from(err: rquest::Error) -> Self { method serialize (line 47) | fn serialize(&self, serializer: S) -> Result type AppResult (line 56) | pub type AppResult = Result; FILE: src-tauri/src/lib.rs type AppRuntimeFlags (line 15) | struct AppRuntimeFlags { function env_flag_enabled (line 19) | fn env_flag_enabled(name: &str) -> bool { function is_wayland_session (line 26) | fn is_wayland_session() -> bool { function should_enable_tray (line 35) | fn should_enable_tray() -> bool { function configure_linux_gdk_backend (line 55) | fn configure_linux_gdk_backend() { function increase_nofile_limit (line 78) | fn increase_nofile_limit() { function greet (line 104) | fn greet(name: &str) -> String { function run (line 109) | pub fn run() { FILE: src-tauri/src/main.rs function main (line 4) | fn main() { FILE: src-tauri/src/models/account.rs type Account (line 7) | pub struct Account { method new (line 66) | pub fn new(id: String, email: String, token: TokenData) -> Self { method update_last_used (line 95) | pub fn update_last_used(&mut self) { method update_quota (line 99) | pub fn update_quota(&mut self, quota: QuotaData) { type AccountIndex (line 106) | pub struct AccountIndex { method new (line 130) | pub fn new() -> Self { type AccountSummary (line 114) | pub struct AccountSummary { method default (line 140) | fn default() -> Self { type DeviceProfile (line 147) | pub struct DeviceProfile { type DeviceProfileVersion (line 156) | pub struct DeviceProfileVersion { type AccountExportItem (line 167) | pub struct AccountExportItem { type AccountExportResponse (line 174) | pub struct AccountExportResponse { FILE: src-tauri/src/models/config.rs type AppConfig (line 7) | pub struct AppConfig { method new (line 172) | pub fn new() -> Self { type ScheduledWarmupConfig (line 37) | pub struct ScheduledWarmupConfig { method new (line 56) | pub fn new() -> Self { function default_warmup_models (line 46) | fn default_warmup_models() -> Vec { method default (line 65) | fn default() -> Self { type QuotaProtectionConfig (line 72) | pub struct QuotaProtectionConfig { method new (line 94) | pub fn new() -> Self { function default_monitored_models (line 84) | fn default_monitored_models() -> Vec { method default (line 104) | fn default() -> Self { type PinnedQuotaModelsConfig (line 111) | pub struct PinnedQuotaModelsConfig { method new (line 127) | pub fn new() -> Self { function default_pinned_models (line 117) | fn default_pinned_models() -> Vec { method default (line 135) | fn default() -> Self { type CircuitBreakerConfig (line 142) | pub struct CircuitBreakerConfig { method new (line 157) | pub fn new() -> Self { function default_backoff_steps (line 152) | fn default_backoff_steps() -> Vec { method default (line 166) | fn default() -> Self { method default (line 196) | fn default() -> Self { FILE: src-tauri/src/models/quota.rs type ModelQuota (line 5) | pub struct ModelQuota { type QuotaData (line 31) | pub struct QuotaData { method new (line 48) | pub fn new() -> Self { method add_model (line 59) | pub fn add_model(&mut self, model: ModelQuota) { method default (line 65) | fn default() -> Self { FILE: src-tauri/src/models/token.rs type TokenData (line 4) | pub struct TokenData { method new (line 19) | pub fn new( FILE: src-tauri/src/modules/account.rs type TestDataDir (line 25) | struct TestDataDir { method new (line 30) | fn new() -> Self { method path (line 46) | fn path(&self) -> &PathBuf { method drop (line 52) | fn drop(&mut self) { function write_corrupted_index (line 58) | fn write_corrupted_index(path: &PathBuf, content: &[u8]) { function create_account_file (line 64) | fn create_account_file(path: &PathBuf, account_id: &str, email: &str) { function test_load_account_index_with_bom_prefix (line 87) | fn test_load_account_index_with_bom_prefix() { function test_load_account_index_with_nul_prefix (line 110) | fn test_load_account_index_with_nul_prefix() { function test_load_account_index_with_garbage_content (line 133) | fn test_load_account_index_with_garbage_content() { function test_load_account_index_with_empty_file (line 150) | fn test_load_account_index_with_empty_file() { function test_load_account_index_with_whitespace_only (line 166) | fn test_load_account_index_with_whitespace_only() { function test_missing_index_with_existing_accounts (line 182) | fn test_missing_index_with_existing_accounts() { function test_save_account_index_roundtrip (line 218) | fn test_save_account_index_roundtrip() { function test_backup_created_on_parse_failure (line 279) | fn test_backup_created_on_parse_failure() { constant DATA_DIR (line 326) | const DATA_DIR: &str = ".antigravity_tools"; constant ACCOUNTS_INDEX (line 327) | const ACCOUNTS_INDEX: &str = "accounts.json"; constant ACCOUNTS_DIR (line 328) | const ACCOUNTS_DIR: &str = "accounts"; function get_data_dir (line 331) | pub fn get_data_dir() -> Result { function get_accounts_dir (line 355) | pub fn get_accounts_dir() -> Result { function load_account_index_in_dir (line 368) | fn load_account_index_in_dir(data_dir: &PathBuf) -> Result Result Result Result { function sanitize_index_content (line 526) | fn sanitize_index_content(raw: &[u8]) -> String { function try_save_recovered_index (line 546) | fn try_save_recovered_index( function save_account_index (line 593) | pub fn save_account_index(index: &AccountIndex) -> Result<(), String> { function atomic_replace_file (line 600) | fn atomic_replace_file(src: &PathBuf, dst: &PathBuf) -> Result<(), Strin... function atomic_replace_file (line 641) | fn atomic_replace_file(src: &PathBuf, dst: &PathBuf) -> Result<(), Strin... function load_account (line 646) | pub fn load_account(account_id: &str) -> Result { function save_account (line 653) | pub fn save_account(account: &Account) -> Result<(), String> { function list_accounts (line 677) | pub fn list_accounts() -> Result, String> { function add_account (line 701) | pub fn add_account( function upsert_account (line 747) | pub fn upsert_account( function delete_account (line 824) | pub fn delete_account(account_id: &str) -> Result<(), String> { function delete_accounts (line 861) | pub fn delete_accounts(account_ids: &[String]) -> Result<(), String> { function reorder_accounts (line 898) | pub fn reorder_accounts(account_ids: &[String]) -> Result<(), String> { function switch_account (line 937) | pub async fn switch_account( type DeviceProfiles (line 1013) | pub struct DeviceProfiles { function get_device_profiles (line 1020) | pub fn get_device_profiles(account_id: &str) -> Result Result Result Res... function delete_device_version (line 1120) | pub fn delete_device_version(account_id: &str, version_id: &str) -> Resu... function apply_device_profile (line 1141) | pub fn apply_device_profile(account_id: &str) -> Result Result { function get_current_account_id (line 1176) | pub fn get_current_account_id() -> Result, String> { function get_current_account (line 1182) | pub fn get_current_account() -> Result, String> { function set_current_account_id (line 1191) | pub fn set_current_account_id(account_id: &str) -> Result<(), String> { function update_account_quota (line 1201) | pub fn update_account_quota(account_id: &str, quota: QuotaData) -> Resul... function toggle_proxy_status (line 1290) | pub fn toggle_proxy_status( function find_account_id_by_email (line 1326) | pub fn find_account_id_by_email(email: &str) -> Option { function mark_account_forbidden (line 1332) | pub fn mark_account_forbidden(account_id: &str, reason: &str) -> Result<... function export_accounts_by_ids (line 1375) | pub fn export_accounts_by_ids(account_ids: &[String]) -> Result Result, String> { function fetch_quota_with_retry (line 1408) | pub async fn fetch_quota_with_retry(account: &mut Account) -> crate::err... type RefreshStats (line 1597) | pub struct RefreshStats { function refresh_all_quotas_logic (line 1605) | pub async fn refresh_all_quotas_logic() -> Result { function check_and_trigger_warmup_for_recovered_models (line 1708) | pub async fn check_and_trigger_warmup_for_recovered_models() { FILE: src-tauri/src/modules/account_service.rs type AccountService (line 5) | pub struct AccountService { method new (line 10) | pub fn new(integration: crate::modules::integration::SystemManager) ->... method add_account (line 15) | pub async fn add_account(&self, refresh_token: &str) -> Result Result<(), String> { method switch_account (line 89) | pub async fn switch_account(&self, account_id: &str) -> Result<(), Str... method list_accounts (line 94) | pub fn list_accounts(&self) -> Result, String> { method get_current_id (line 99) | pub fn get_current_id(&self) -> Result, String> { method prepare_oauth_url (line 105) | pub async fn prepare_oauth_url(&self) -> Result { method start_oauth_login (line 113) | pub async fn start_oauth_login(&self) -> Result { method complete_oauth_login (line 122) | pub async fn complete_oauth_login(&self) -> Result { method cancel_oauth_login (line 131) | pub fn cancel_oauth_login(&self) { method submit_oauth_code (line 135) | pub async fn submit_oauth_code( method process_oauth_token (line 143) | async fn process_oauth_token( FILE: src-tauri/src/modules/cache.rs type ClearResult (line 13) | pub struct ClearResult { function get_antigravity_cache_paths (line 23) | pub fn get_antigravity_cache_paths() -> Vec { function get_existing_cache_paths (line 81) | pub fn get_existing_cache_paths() -> Vec { function get_dir_size (line 89) | fn get_dir_size(path: &PathBuf) -> u64 { function clear_directory (line 116) | fn clear_directory(path: &PathBuf) -> Result { function clear_antigravity_cache (line 136) | pub fn clear_antigravity_cache(custom_paths: Option>) -> Res... function test_get_cache_paths_not_empty (line 194) | fn test_get_cache_paths_not_empty() { function test_clear_result_serialization (line 200) | fn test_clear_result_serialization() { FILE: src-tauri/src/modules/cloudflared.rs constant CREATE_NO_WINDOW (line 14) | const CREATE_NO_WINDOW: u32 = 0x08000000; constant DETACHED_PROCESS (line 16) | const DETACHED_PROCESS: u32 = 0x00000008; constant CREATE_NEW_PROCESS_GROUP (line 18) | const CREATE_NEW_PROCESS_GROUP: u32 = 0x00000200; type TunnelMode (line 23) | pub enum TunnelMode { method default (line 31) | fn default() -> Self { type CloudflaredConfig (line 38) | pub struct CloudflaredConfig { method default (line 54) | fn default() -> Self { type CloudflaredStatus (line 67) | pub struct CloudflaredStatus { method default (line 76) | fn default() -> Self { type CloudflaredManager (line 88) | pub struct CloudflaredManager { method new (line 97) | pub fn new(data_dir: &PathBuf) -> Self { method check_installed (line 114) | pub async fn check_installed(&self) -> (bool, Option) { method get_status (line 141) | pub async fn get_status(&self) -> CloudflaredStatus { method update_status (line 146) | async fn update_status(&self, f: impl FnOnce(&mut CloudflaredStatus)) { method install (line 152) | pub async fn install(&self) -> Result { method start (line 218) | pub async fn start(&self, config: CloudflaredConfig) -> Result Result { function get_download_url (line 401) | fn get_download_url() -> Result { function spawn_log_reader (line 420) | fn spawn_log_reader(stream: R, status_ref: Arc Option { FILE: src-tauri/src/modules/config.rs constant CONFIG_FILE (line 8) | const CONFIG_FILE: &str = "gui_config.json"; function load_app_config (line 11) | pub fn load_app_config() -> Result { function save_app_config (line 90) | pub fn save_app_config(config: &AppConfig) -> Result<(), String> { FILE: src-tauri/src/modules/db.rs function get_antigravity_path (line 5) | fn get_antigravity_path() -> Option { function get_db_path (line 18) | pub fn get_db_path() -> Result { function inject_token (line 65) | pub fn inject_token( function inject_new_format (line 127) | fn inject_new_format( function inject_old_format (line 170) | fn inject_old_format( FILE: src-tauri/src/modules/device.rs constant DATA_DIR (line 11) | const DATA_DIR: &str = ".antigravity_tools"; constant GLOBAL_BASELINE (line 12) | const GLOBAL_BASELINE: &str = "device_original.json"; function get_data_dir (line 14) | fn get_data_dir() -> Result { function get_storage_path (line 24) | pub fn get_storage_path() -> Result { function get_storage_dir (line 85) | pub fn get_storage_dir() -> Result { function get_state_db_path (line 93) | pub fn get_state_db_path() -> Result { function backup_storage (line 100) | pub fn backup_storage(storage_path: &Path) -> Result { function read_profile (line 117) | pub fn read_profile(storage_path: &Path) -> Result { function write_profile (line 148) | pub fn write_profile(storage_path: &Path, profile: &DeviceProfile) -> Re... function sync_service_machine_id (line 225) | pub fn sync_service_machine_id(storage_path: &Path, service_id: &str) ->... function sync_service_machine_id_from_storage (line 249) | pub fn sync_service_machine_id_from_storage(storage_path: &Path) -> Resu... function sync_state_service_machine_id_value (line 294) | fn sync_state_service_machine_id_value(service_id: &str) -> Result<(), S... function load_global_original (line 320) | pub fn load_global_original() -> Option { function save_global_original (line 334) | pub fn save_global_original(profile: &DeviceProfile) -> Result<(), Strin... function list_backups (line 347) | pub fn list_backups(storage_path: &Path) -> Result, String> { function restore_backup (line 373) | pub fn restore_backup(storage_path: &Path, use_oldest: bool) -> Result DeviceProfile { function random_hex (line 400) | fn random_hex(length: usize) -> String { function new_standard_machine_id (line 409) | fn new_standard_machine_id() -> String { FILE: src-tauri/src/modules/http_api.rs constant DEFAULT_PORT (line 21) | pub const DEFAULT_PORT: u16 = 19527; type HttpApiSettings (line 29) | pub struct HttpApiSettings { function default_enabled (line 38) | fn default_enabled() -> bool { function default_port (line 42) | fn default_port() -> u16 { method default (line 47) | fn default() -> Self { function load_settings (line 56) | pub fn load_settings() -> Result { function save_settings (line 73) | pub fn save_settings(settings: &HttpApiSettings) -> Result<(), String> { type ApiState (line 87) | pub struct ApiState { method new (line 94) | pub fn new(integration: crate::modules::integration::SystemManager) ->... type HealthResponse (line 107) | struct HealthResponse { type AccountResponse (line 113) | struct AccountResponse { type QuotaResponse (line 125) | struct QuotaResponse { type ModelQuota (line 132) | struct ModelQuota { type AccountListResponse (line 139) | struct AccountListResponse { type CurrentAccountResponse (line 145) | struct CurrentAccountResponse { type SwitchResponse (line 150) | struct SwitchResponse { type RefreshResponse (line 156) | struct RefreshResponse { type BindDeviceResponse (line 163) | struct BindDeviceResponse { type DeviceProfileResponse (line 170) | struct DeviceProfileResponse { type ErrorResponse (line 178) | struct ErrorResponse { type LogsResponse (line 183) | struct LogsResponse { type SwitchRequest (line 193) | struct SwitchRequest { type BindDeviceRequest (line 198) | struct BindDeviceRequest { function default_bind_mode (line 203) | fn default_bind_mode() -> String { type LogsRequest (line 208) | struct LogsRequest { function health (line 224) | async fn health() -> impl IntoResponse { function list_accounts (line 232) | async fn list_accounts() -> Result Result Result HashMap { function get_tray_texts (line 43) | pub fn get_tray_texts(lang: &str) -> TrayTexts { FILE: src-tauri/src/modules/integration.rs type SystemIntegration (line 5) | pub trait SystemIntegration: Send + Sync { method on_account_switch (line 7) | async fn on_account_switch(&self, account: &crate::models::Account) ->... method update_tray (line 10) | fn update_tray(&self); method show_notification (line 13) | fn show_notification(&self, title: &str, body: &str); method on_account_switch (line 22) | async fn on_account_switch(&self, account: &crate::models::Account) ->... method update_tray (line 62) | fn update_tray(&self) { method show_notification (line 66) | fn show_notification(&self, title: &str, body: &str) { method on_account_switch (line 76) | async fn on_account_switch(&self, account: &crate::models::Account) ->... method update_tray (line 83) | fn update_tray(&self) { method show_notification (line 87) | fn show_notification(&self, title: &str, body: &str) { method on_account_switch (line 134) | async fn on_account_switch(&self, account: &crate::models::Account) ->... method update_tray (line 147) | fn update_tray(&self) { method show_notification (line 160) | fn show_notification(&self, title: &str, body: &str) { type DesktopIntegration (line 17) | pub struct DesktopIntegration { type HeadlessIntegration (line 73) | pub struct HeadlessIntegration; type SystemManager (line 93) | pub enum SystemManager { method on_account_switch (line 99) | pub async fn on_account_switch(&self, account: &Account) -> Result<(),... method update_tray (line 112) | pub fn update_tray(&self) { method show_notification (line 119) | pub fn show_notification(&self, title: &str, body: &str) { FILE: src-tauri/src/modules/log_bridge.rs constant MAX_BUFFER_SIZE (line 16) | const MAX_BUFFER_SIZE: usize = 5000; function get_log_buffer (line 30) | fn get_log_buffer() -> &'static Arc>> { type LogEntry (line 37) | pub struct LogEntry { function init_log_bridge (line 47) | pub fn init_log_bridge(app_handle: tauri::AppHandle) { function enable_log_bridge (line 53) | pub fn enable_log_bridge() { function disable_log_bridge (line 68) | pub fn disable_log_bridge() { function is_log_bridge_enabled (line 74) | pub fn is_log_bridge_enabled() -> bool { function get_buffered_logs (line 79) | pub fn get_buffered_logs() -> Vec { function clear_log_buffer (line 84) | pub fn clear_log_buffer() { function emit_accounts_refreshed (line 90) | pub fn emit_accounts_refreshed() { type FieldVisitor (line 98) | struct FieldVisitor { method new (line 104) | fn new() -> Self { method record_debug (line 113) | fn record_debug(&mut self, field: &Field, value: &dyn std::fmt::Debug) { method record_str (line 122) | fn record_str(&mut self, field: &Field, value: &str) { method record_i64 (line 131) | fn record_i64(&mut self, field: &Field, value: i64) { method record_u64 (line 136) | fn record_u64(&mut self, field: &Field, value: u64) { method record_bool (line 141) | fn record_bool(&mut self, field: &Field, value: bool) { type TauriLogBridgeLayer (line 148) | pub struct TauriLogBridgeLayer; method new (line 151) | pub fn new() -> Self { method on_event (line 166) | fn on_event(&self, event: &Event<'_>, _ctx: Context<'_, S>) { method default (line 157) | fn default() -> Self { function enable_debug_console (line 225) | pub fn enable_debug_console() { function disable_debug_console (line 230) | pub fn disable_debug_console() { function is_debug_console_enabled (line 235) | pub fn is_debug_console_enabled() -> bool { function get_debug_console_logs (line 240) | pub fn get_debug_console_logs() -> Vec { function clear_debug_console_logs (line 245) | pub fn clear_debug_console_logs() { FILE: src-tauri/src/modules/logger.rs type LocalTimer (line 8) | struct LocalTimer; method format_time (line 11) | fn format_time(&self, w: &mut tracing_subscriber::fmt::format::Writer<... function get_log_dir (line 17) | pub fn get_log_dir() -> Result { function init_logger (line 29) | pub fn init_logger() { function cleanup_old_logs (line 89) | pub fn cleanup_old_logs(days_to_keep: u64) -> Result<(), String> { function clear_logs (line 190) | pub fn clear_logs() -> Result<(), String> { function log_info (line 212) | pub fn log_info(message: &str) { function log_warn (line 217) | pub fn log_warn(message: &str) { function log_error (line 222) | pub fn log_error(message: &str) { FILE: src-tauri/src/modules/migration.rs function import_from_v1 (line 10) | pub async fn import_from_v1() -> Result, String> { function import_from_custom_db_path (line 192) | pub async fn import_from_custom_db_path(path_str: String) -> Result Result { function extract_refresh_token_from_file (line 231) | pub fn extract_refresh_token_from_file(db_path: &PathBuf) -> Result Result { FILE: src-tauri/src/modules/mod.rs function fetch_quota (line 39) | pub async fn fetch_quota(access_token: &str, email: &str, account_id: Op... FILE: src-tauri/src/modules/oauth.rs constant CLIENT_ID (line 4) | const CLIENT_ID: &str = "1071006060591-tmhssin2h21lcre235vtolojh4g403ep.... constant CLIENT_SECRET (line 5) | const CLIENT_SECRET: &str = "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"; constant TOKEN_URL (line 6) | const TOKEN_URL: &str = "https://oauth2.googleapis.com/token"; constant USERINFO_URL (line 7) | const USERINFO_URL: &str = "https://www.googleapis.com/oauth2/v2/userinfo"; constant AUTH_URL (line 9) | const AUTH_URL: &str = "https://accounts.google.com/o/oauth2/v2/auth"; type TokenResponse (line 12) | pub struct TokenResponse { type UserInfo (line 22) | pub struct UserInfo { method get_display_name (line 32) | pub fn get_display_name(&self) -> Option { function get_auth_url (line 52) | pub fn get_auth_url(redirect_uri: &str, state: &str) -> String { function exchange_code (line 77) | pub async fn exchange_code(code: &str, redirect_uri: &str) -> Result)... function ensure_fresh_token (line 224) | pub async fn ensure_fresh_token( function test_get_auth_url_contains_state (line 255) | fn test_get_auth_url_contains_state() { FILE: src-tauri/src/modules/oauth_server.rs type OAuthFlowState (line 9) | struct OAuthFlowState { function get_oauth_flow_state (line 21) | fn get_oauth_flow_state() -> &'static Mutex> { function oauth_success_html (line 25) | fn oauth_success_html() -> &'static str { function oauth_fail_html (line 36) | fn oauth_fail_html() -> &'static str { function ensure_oauth_flow_prepared (line 46) | async fn ensure_oauth_flow_prepared(app_handle: Option... function prepare_oauth_url (line 325) | pub async fn prepare_oauth_url(app_handle: Option) -> ... function cancel_oauth_flow (line 330) | pub fn cancel_oauth_flow() { function start_oauth_flow (line 340) | pub async fn start_oauth_flow(app_handle: Option) -> R... function complete_oauth_flow (line 386) | pub async fn complete_oauth_flow(app_handle: Option) -... function submit_oauth_code (line 421) | pub async fn submit_oauth_code(code_input: String, state_input: Option Option { function is_antigravity_running (line 17) | pub fn is_antigravity_running() -> bool { function get_self_family_pids (line 141) | fn get_self_family_pids(system: &sysinfo::System) -> std::collections::H... function get_antigravity_pids (line 194) | fn get_antigravity_pids() -> Vec { function close_antigravity (line 356) | pub fn close_antigravity(#[allow(unused_variables)] timeout_secs: u64) -... function start_antigravity (line 705) | pub fn start_antigravity() -> Result<(), String> { function get_process_info (line 882) | fn get_process_info() -> (Option, Option... function get_path_from_running_process (line 982) | pub fn get_path_from_running_process() -> Option { function get_args_from_running_process (line 988) | pub fn get_args_from_running_process() -> Option> { function get_user_data_dir_from_process (line 994) | pub fn get_user_data_dir_from_process() -> Option { function get_antigravity_executable_path (line 1053) | pub fn get_antigravity_executable_path() -> Option { function check_standard_locations (line 1064) | fn check_standard_locations() -> Option { FILE: src-tauri/src/modules/proxy_db.rs function get_proxy_db_path (line 5) | pub fn get_proxy_db_path() -> Result { function connect_db (line 10) | fn connect_db() -> Result { function init_db (line 26) | pub fn init_db() -> Result<(), String> { function save_log (line 69) | pub fn save_log(log: &ProxyRequestLog) -> Result<(), String> { function get_logs_summary (line 100) | pub fn get_logs_summary(limit: usize, offset: usize) -> Result Result, String> { function get_stats (line 147) | pub fn get_stats() -> Result { function get_log_detail (line 170) | pub fn get_log_detail(log_id: &str) -> Result { function cleanup_old_logs (line 205) | pub fn cleanup_old_logs(days: i64) -> Result { function limit_max_logs (line 223) | pub fn limit_max_logs(max_count: usize) -> Result { function clear_logs (line 238) | pub fn clear_logs() -> Result<(), String> { function get_logs_count (line 245) | pub fn get_logs_count() -> Result { function get_logs_count_filtered (line 260) | pub fn get_logs_count_filtered(filter: &str, errors_only: bool) -> Resul... function get_logs_filtered (line 288) | pub fn get_logs_filtered(filter: &str, errors_only: bool, limit: usize, ... function get_all_logs_for_export (line 399) | pub fn get_all_logs_for_export() -> Result, String> { type IpTokenStats (line 443) | pub struct IpTokenStats { function get_token_usage_by_ip (line 453) | pub fn get_token_usage_by_ip(limit: usize, hours: i64) -> Result) -> rquest::Cli... function create_long_standard_client (line 106) | async fn create_long_standard_client(account_id: Option<&str>) -> rquest... constant CLOUD_CODE_BASE_URL (line 114) | const CLOUD_CODE_BASE_URL: &str = "https://daily-cloudcode-pa.sandbox.go... function fetch_project_id (line 117) | async fn fetch_project_id(access_token: &str, email: &str, account_id: O... function fetch_quota (line 186) | pub async fn fetch_quota(access_token: &str, email: &str, account_id: Op... function fetch_quota_with_cache (line 191) | pub async fn fetch_quota_with_cache( function fetch_quota_inner (line 326) | pub async fn fetch_quota_inner(access_token: &str, email: &str) -> crate... function fetch_all_quotas (line 332) | pub async fn fetch_all_quotas(accounts: Vec<(String, String, String)>) -... function get_valid_token_for_warmup (line 342) | pub async fn get_valid_token_for_warmup(account: &crate::models::account... function warmup_model_directly (line 366) | pub async fn warmup_model_directly( function warm_up_all_accounts (line 421) | pub async fn warm_up_all_accounts() -> Result { function warm_up_account (line 576) | pub async fn warm_up_account(account_id: &str) -> Result { FILE: src-tauri/src/modules/scheduler.rs function get_warmup_history_path (line 13) | fn get_warmup_history_path() -> Result { function load_warmup_history (line 18) | fn load_warmup_history() -> HashMap { function save_warmup_history (line 30) | fn save_warmup_history(history: &HashMap) { function record_warmup_history (line 38) | pub fn record_warmup_history(key: &str, timestamp: i64) { function check_cooldown (line 44) | pub fn check_cooldown(key: &str, cooldown_seconds: i64) -> bool { function start_scheduler (line 54) | pub fn start_scheduler(app_handle: Option, proxy_state... function trigger_warmup_for_account (line 274) | pub async fn trigger_warmup_for_account(account: &Account) { FILE: src-tauri/src/modules/security_db.rs type IpAccessLog (line 10) | pub struct IpAccessLog { type IpBlacklistEntry (line 28) | pub struct IpBlacklistEntry { type IpWhitelistEntry (line 40) | pub struct IpWhitelistEntry { type IpStats (line 49) | pub struct IpStats { type IpRanking (line 60) | pub struct IpRanking { function get_security_db_path (line 68) | pub fn get_security_db_path() -> Result { function connect_db (line 74) | fn connect_db() -> Result { function init_db (line 93) | pub fn init_db() -> Result<(), String> { function save_ip_access_log (line 178) | pub fn save_ip_access_log(log: &IpAccessLog) -> Result<(), String> { function get_ip_access_logs (line 205) | pub fn get_ip_access_logs( function get_ip_stats (line 281) | pub fn get_ip_stats() -> Result { function get_top_ips (line 323) | pub fn get_top_ips(limit: usize, hours: i64) -> Result, S... function cleanup_old_ip_logs (line 362) | pub fn cleanup_old_ip_logs(days: i64) -> Result { function add_to_blacklist (line 385) | pub fn add_to_blacklist( function remove_from_blacklist (line 415) | pub fn remove_from_blacklist(id: &str) -> Result<(), String> { function get_blacklist (line 425) | pub fn get_blacklist() -> Result, String> { function is_ip_in_blacklist (line 458) | pub fn is_ip_in_blacklist(ip: &str) -> Result { function get_blacklist_entry_for_ip (line 463) | pub fn get_blacklist_entry_for_ip(ip: &str) -> Result bool { function add_to_whitelist (line 561) | pub fn add_to_whitelist(ip_pattern: &str, description: Option<&str>) -> ... function remove_from_whitelist (line 583) | pub fn remove_from_whitelist(id: &str) -> Result<(), String> { function get_whitelist (line 593) | pub fn get_whitelist() -> Result, String> { function is_ip_in_whitelist (line 623) | pub fn is_ip_in_whitelist(ip: &str) -> Result { function clear_ip_access_logs (line 653) | pub fn clear_ip_access_logs() -> Result<(), String> { function get_ip_access_logs_count (line 661) | pub fn get_ip_access_logs_count(ip_filter: Option<&str>, blocked_only: b... FILE: src-tauri/src/modules/token_stats.rs type TokenStatsAggregated (line 7) | pub struct TokenStatsAggregated { type AccountTokenStats (line 17) | pub struct AccountTokenStats { type TokenStatsSummary (line 27) | pub struct TokenStatsSummary { type ModelTokenStats (line 37) | pub struct ModelTokenStats { type ModelTrendPoint (line 46) | pub struct ModelTrendPoint { type AccountTrendPoint (line 53) | pub struct AccountTrendPoint { function get_db_path (line 58) | pub(crate) fn get_db_path() -> Result { function connect_db (line 63) | fn connect_db() -> Result { function init_db (line 79) | pub fn init_db() -> Result<(), String> { function record_usage (line 129) | pub fn record_usage( function get_hourly_stats (line 162) | pub fn get_hourly_stats(hours: i64) -> Result,... function get_daily_stats (line 201) | pub fn get_daily_stats(days: i64) -> Result, S... function get_weekly_stats (line 240) | pub fn get_weekly_stats(weeks: i64) -> Result,... function get_account_stats (line 279) | pub fn get_account_stats(hours: i64) -> Result, S... function get_summary_stats (line 318) | pub fn get_summary_stats(hours: i64) -> Result { function get_model_stats (line 353) | pub fn get_model_stats(hours: i64) -> Result, Strin... function get_model_trend_hourly (line 390) | pub fn get_model_trend_hourly(hours: i64) -> Result... function get_model_trend_daily (line 430) | pub fn get_model_trend_daily(days: i64) -> Result, ... function get_account_trend_hourly (line 470) | pub fn get_account_trend_hourly(hours: i64) -> Result Result tauri::Result<()> { function update_tray_menus (line 176) | pub fn update_tray_menus(app: &tauri::AppHandle) { FILE: src-tauri/src/modules/update_checker.rs constant GITHUB_API_URL (line 6) | const GITHUB_API_URL: &str = "https://api.github.com/repos/lbjlaq/Antigr... constant GITHUB_RAW_URL (line 7) | const GITHUB_RAW_URL: &str = "https://raw.githubusercontent.com/lbjlaq/A... constant JSDELIVR_URL (line 8) | const JSDELIVR_URL: &str = "https://cdn.jsdelivr.net/gh/lbjlaq/Antigravi... constant CURRENT_VERSION (line 9) | const CURRENT_VERSION: &str = env!("CARGO_PKG_VERSION"); constant DEFAULT_CHECK_INTERVAL_HOURS (line 10) | const DEFAULT_CHECK_INTERVAL_HOURS: u64 = 24; type UpdateInfo (line 13) | pub struct UpdateInfo { type UpdateSettings (line 25) | pub struct UpdateSettings { function default_check_interval (line 32) | fn default_check_interval() -> u64 { method default (line 37) | fn default() -> Self { type GitHubRelease (line 47) | struct GitHubRelease { constant UPDATER_JSON_URL (line 54) | const UPDATER_JSON_URL: &str = "https://github.com/lbjlaq/Antigravity-Ma... function check_for_updates (line 59) | pub async fn check_for_updates() -> Result { type UpdaterJson (line 111) | struct UpdaterJson { function check_updater_json (line 117) | async fn check_updater_json() -> Result { function create_client (line 159) | async fn create_client() -> Result { function check_github_api (line 182) | async fn check_github_api() -> Result { type PackageJson (line 224) | struct PackageJson { function check_static_url (line 228) | async fn check_static_url(url: &str, source_name: &str) -> Result bool { function should_check_for_updates (line 299) | pub fn should_check_for_updates(settings: &UpdateSettings) -> bool { function load_update_settings (line 319) | pub fn load_update_settings() -> Result { function save_update_settings (line 336) | pub fn save_update_settings(settings: &UpdateSettings) -> Result<(), Str... function update_last_check_time (line 349) | pub fn update_last_check_time() -> Result<(), String> { function is_homebrew_installed (line 359) | pub fn is_homebrew_installed() -> bool { function brew_upgrade_cask (line 380) | pub async fn brew_upgrade_cask() -> Result { function brew_upgrade_cask (line 385) | pub async fn brew_upgrade_cask() -> Result { function test_compare_versions (line 439) | fn test_compare_versions() { function test_should_check_for_updates (line 448) | fn test_should_check_for_updates() { FILE: src-tauri/src/modules/user_token_db.rs type UserToken (line 15) | pub struct UserToken { type TokenIpBinding (line 35) | pub struct TokenIpBinding { type TokenUsageLog (line 47) | pub struct TokenUsageLog { function get_db_path (line 59) | pub fn get_db_path() -> Result { function connect_db (line 66) | pub fn connect_db() -> Result { function init_db (line 74) | pub fn init_db() -> Result<(), String> { function create_token (line 157) | pub fn create_token( function list_tokens (line 225) | pub fn list_tokens() -> Result, String> { function get_token_by_id (line 259) | pub fn get_token_by_id(id: &str) -> Result, String> { function get_token_by_value (line 288) | pub fn get_token_by_value(token: &str) -> Result, Stri... function update_token (line 317) | pub fn update_token( function renew_token (line 382) | pub fn renew_token(id: &str, expires_type: &str) -> Result<(), String> { function delete_token (line 402) | pub fn delete_token(id: &str) -> Result<(), String> { function get_token_ips (line 410) | pub fn get_token_ips(token_id: &str) -> Result, Stri... function record_token_usage_and_ip (line 436) | pub fn record_token_usage_and_ip( function validate_token (line 503) | pub fn validate_token(token_str: &str, ip: &str) -> Result<(bool, Option... function get_username_for_ip (line 572) | pub fn get_username_for_ip(ip: &str) -> Result, String> { function test_create_and_query_token (line 593) | fn test_create_and_query_token() { FILE: src-tauri/src/modules/version.rs type AntigravityVersion (line 7) | pub struct AntigravityVersion { function extract_semver (line 14) | fn extract_semver(raw: &str) -> Option { function get_antigravity_version (line 38) | pub fn get_antigravity_version() -> Result { function get_version_macos (line 62) | fn get_version_macos(exe_path: &PathBuf) -> Result Result Result bool { function compare_version (line 198) | fn compare_version(v1: &str, v2: &str) -> std::cmp::Ordering { function test_version_comparison (line 224) | fn test_version_comparison() { function test_is_new_version (line 233) | fn test_is_new_version() { function test_extract_semver_from_messy_output (line 254) | fn test_extract_semver_from_messy_output() { FILE: src-tauri/src/proxy/audio/mod.rs type AudioProcessor (line 4) | pub struct AudioProcessor; method detect_mime_type (line 8) | pub fn detect_mime_type(filename: &str) -> Result { method encode_to_base64 (line 26) | pub fn encode_to_base64(audio_data: &[u8]) -> String { method exceeds_size_limit (line 31) | pub fn exceeds_size_limit(size_bytes: usize) -> bool { function test_detect_mime_type (line 42) | fn test_detect_mime_type() { function test_exceeds_size_limit (line 55) | fn test_exceeds_size_limit() { function test_base64_encoding (line 63) | fn test_base64_encoding() { FILE: src-tauri/src/proxy/cli_sync.rs constant CREATE_NO_WINDOW (line 11) | const CREATE_NO_WINDOW: u32 = 0x08000000; function scan_windows_cli_paths (line 15) | fn scan_windows_cli_paths(cmd: &str) -> Option { function parse_where_output (line 76) | fn parse_where_output(output: &[u8]) -> Option { function is_cmd_file (line 92) | fn is_cmd_file(path: &PathBuf) -> bool { function is_safe_path (line 101) | fn is_safe_path(path: &PathBuf) -> bool { function run_version_command (line 125) | fn run_version_command(executable_path: &PathBuf) -> Option { function extract_version (line 158) | fn extract_version(s: &str) -> Option { type CliApp (line 167) | pub enum CliApp { method as_str (line 181) | pub fn as_str(&self) -> &'static str { method config_files (line 190) | pub fn config_files(&self) -> Vec { method default_url (line 239) | pub fn default_url(&self) -> &'static str { type CliConfigFile (line 175) | pub struct CliConfigFile { type CliStatus (line 250) | pub struct CliStatus { function check_cli_installed (line 260) | pub fn check_cli_installed(app: &CliApp) -> (bool, Option) { function get_sync_status (line 370) | pub fn get_sync_status(app: &CliApp, proxy_url: &str) -> (bool, bool, Op... function sync_config (line 480) | pub fn sync_config(app: &CliApp, proxy_url: &str, api_key: &str, model: ... function get_cli_sync_status (line 659) | pub async fn get_cli_sync_status(app_type: CliApp, proxy_url: String) ->... function execute_cli_sync (line 678) | pub async fn execute_cli_sync(app_type: CliApp, proxy_url: String, api_k... function execute_cli_restore (line 683) | pub async fn execute_cli_restore(app_type: CliApp) -> Result<(), String> { function get_cli_config_content (line 711) | pub async fn get_cli_config_content(app_type: CliApp, file_name: Option<... FILE: src-tauri/src/proxy/common/client_adapter.rs type ClientAdapter (line 15) | pub trait ClientAdapter: Send + Sync { method matches (line 23) | fn matches(&self, headers: &HeaderMap) -> bool; method bypass_signature_matching (line 29) | fn bypass_signature_matching(&self) -> bool { method let_it_crash (line 36) | fn let_it_crash(&self) -> bool { method signature_buffer_strategy (line 43) | fn signature_buffer_strategy(&self) -> SignatureBufferStrategy { method inject_beta_headers (line 50) | fn inject_beta_headers(&self, _headers: &mut HeaderMap) { method supported_protocols (line 58) | fn supported_protocols(&self) -> Vec { method matches (line 112) | fn matches(&self, headers: &HeaderMap) -> bool { method bypass_signature_matching (line 118) | fn bypass_signature_matching(&self) -> bool { type SignatureBufferStrategy (line 65) | pub enum SignatureBufferStrategy { type Protocol (line 78) | pub enum Protocol { function get_user_agent (line 97) | pub fn get_user_agent(headers: &HeaderMap) -> Option { type TestAdapter (line 109) | struct TestAdapter; function test_adapter_matches (line 124) | fn test_adapter_matches() { function test_adapter_no_match (line 135) | fn test_adapter_no_match() { function test_get_user_agent (line 145) | fn test_get_user_agent() { FILE: src-tauri/src/proxy/common/client_adapters/opencode.rs type OpencodeAdapter (line 16) | pub struct OpencodeAdapter; method matches (line 19) | fn matches(&self, headers: &HeaderMap) -> bool { method bypass_signature_matching (line 25) | fn bypass_signature_matching(&self) -> bool { method let_it_crash (line 30) | fn let_it_crash(&self) -> bool { method signature_buffer_strategy (line 35) | fn signature_buffer_strategy(&self) -> SignatureBufferStrategy { method inject_beta_headers (line 40) | fn inject_beta_headers(&self, headers: &mut HeaderMap) { method supported_protocols (line 46) | fn supported_protocols(&self) -> Vec { function test_opencode_adapter_matches (line 61) | fn test_opencode_adapter_matches() { function test_opencode_adapter_case_insensitive (line 71) | fn test_opencode_adapter_case_insensitive() { function test_opencode_adapter_no_match (line 81) | fn test_opencode_adapter_no_match() { function test_opencode_adapter_strategies (line 91) | fn test_opencode_adapter_strategies() { function test_opencode_adapter_protocols (line 99) | fn test_opencode_adapter_protocols() { function test_opencode_adapter_beta_headers (line 111) | fn test_opencode_adapter_beta_headers() { FILE: src-tauri/src/proxy/common/error.rs type ProxyError (line 6) | pub enum ProxyError { method into_response (line 24) | fn into_response(self) -> axum::response::Response { FILE: src-tauri/src/proxy/common/json_schema.rs constant CONSTRAINT_FIELDS (line 8) | const CONSTRAINT_FIELDS: &[(&str, &str)] = &[ constant MAX_RECURSION_DEPTH (line 34) | const MAX_RECURSION_DEPTH: usize = 10; function clean_json_schema (line 44) | pub fn clean_json_schema(value: &mut Value) { function clean_json_schema_for_tool (line 79) | pub fn clean_json_schema_for_tool(value: &mut Value, tool_name: &str) { function collect_all_defs (line 102) | fn collect_all_defs(value: &Value, defs: &mut serde_json::Map) { function append_hint_to_description (line 593) | fn append_hint_to_description(map: &mut serde_json::Map, ... function move_constraints_to_description (line 609) | fn move_constraints_to_description(map: &mut serde_json::Map i32 { function extract_best_schema_from_union (line 656) | fn extract_best_schema_from_union(union_array: &Vec) -> Option<(V... function get_schema_type_name (line 681) | fn get_schema_type_name(schema: &Value) -> Option { function fix_tool_call_args (line 712) | pub fn fix_tool_call_args(args: &mut Value, schema: &Value) { function fix_single_arg_recursive (line 725) | fn fix_single_arg_recursive(value: &mut Value, schema: &Value) { function test_clean_json_schema_draft_2020_12 (line 808) | fn test_clean_json_schema_draft_2020_12() { function test_type_fallback (line 870) | fn test_type_fallback() { function test_flatten_refs (line 883) | fn test_flatten_refs() { function test_clean_json_schema_missing_required (line 909) | fn test_clean_json_schema_missing_required() { function test_anyof_type_extraction (line 928) | fn test_anyof_type_extraction() { function test_oneof_type_extraction (line 973) | fn test_oneof_type_extraction() { function test_existing_type_preserved (line 993) | fn test_existing_type_preserved() { function test_issue_815_anyof_properties_preserved (line 1014) | fn test_issue_815_anyof_properties_preserved() { function test_clean_json_schema_on_non_schema_object (line 1059) | fn test_clean_json_schema_on_non_schema_object() { function test_nullable_handling_with_description (line 1081) | fn test_nullable_handling_with_description() { function test_clean_anyof_with_propertynames (line 1103) | fn test_clean_anyof_with_propertynames() { function test_clean_items_array_with_const (line 1137) | fn test_clean_items_array_with_const() { function test_deep_nested_array_cleaning (line 1163) | fn test_deep_nested_array_cleaning() { function test_fix_tool_call_args (line 1212) | fn test_fix_tool_call_args() { function test_fix_tool_call_args_protection (line 1251) | fn test_fix_tool_call_args_protection() { function test_nested_defs_flattening (line 1273) | fn test_nested_defs_flattening() { function test_unresolved_ref_fallback (line 1324) | fn test_unresolved_ref_fallback() { function test_deeply_nested_multi_level_defs (line 1360) | fn test_deeply_nested_multi_level_defs() { function test_non_standard_field_cleaning_and_healing (line 1415) | fn test_non_standard_field_cleaning_and_healing() { function test_implicit_type_injection (line 1440) | fn test_implicit_type_injection() { function test_gemini_strict_validation_injection (line 1463) | fn test_gemini_strict_validation_injection() { function test_malformed_items_as_properties (line 1498) | fn test_malformed_items_as_properties() { function test_circular_ref_flattening (line 1523) | fn test_circular_ref_flattening() { function test_any_of_best_branch_selection (line 1555) | fn test_any_of_best_branch_selection() { FILE: src-tauri/src/proxy/common/model_mapping.rs function update_dynamic_forwarding_rules (line 9) | pub fn update_dynamic_forwarding_rules(old_model: String, new_model: Str... function map_claude_model_to_gemini (line 117) | pub fn map_claude_model_to_gemini(input: &str) -> String { function get_supported_models (line 136) | pub fn get_supported_models() -> Vec { function get_all_dynamic_models (line 141) | pub async fn get_all_dynamic_models( function wildcard_match (line 207) | fn wildcard_match(pattern: &str, text: &str) -> bool { function resolve_model_route (line 253) | pub fn resolve_model_route( function normalize_to_standard_id (line 310) | pub fn normalize_to_standard_id(model_name: &str) -> Option { function test_model_mapping (line 341) | fn test_model_mapping() { function test_wildcard_priority (line 433) | fn test_wildcard_priority() { function test_multi_wildcard_support (line 449) | fn test_multi_wildcard_support() { function test_wildcard_edge_cases (line 477) | fn test_wildcard_edge_cases() { FILE: src-tauri/src/proxy/common/rate_limiter.rs type RateLimiter (line 8) | pub struct RateLimiter { method new (line 14) | pub fn new(min_interval_ms: u64) -> Self { method wait (line 21) | pub async fn wait(&self) { function test_rate_limiter (line 39) | async fn test_rate_limiter() { FILE: src-tauri/src/proxy/common/schema_cache.rs type CacheEntry (line 12) | struct CacheEntry { type SchemaCache (line 22) | struct SchemaCache { method new (line 52) | fn new() -> Self { method get (line 60) | fn get(&mut self, key: &str) -> Option { method insert (line 76) | fn insert(&mut self, key: String, schema: Value) { method evict_lru (line 92) | fn evict_lru(&mut self) { method stats (line 110) | fn stats(&self) -> CacheStats { method clear (line 115) | fn clear(&mut self) { type CacheStats (line 31) | pub struct CacheStats { method hit_rate (line 42) | pub fn hit_rate(&self) -> f64 { function compute_schema_hash (line 127) | fn compute_schema_hash(schema: &Value) -> String { function clean_json_schema_cached (line 149) | pub fn clean_json_schema_cached(schema: &mut Value, tool_name: &str) { function get_cache_stats (line 174) | pub fn get_cache_stats() -> CacheStats { function clear_cache (line 182) | pub fn clear_cache() { function test_compute_schema_hash (line 194) | fn test_compute_schema_hash() { function test_cache_hit (line 210) | fn test_cache_hit() { function test_cache_eviction (line 234) | fn test_cache_eviction() { FILE: src-tauri/src/proxy/common/session.rs function derive_session_id (line 6) | pub fn derive_session_id(account_id: &str) -> String { function test_derive_session_id (line 20) | fn test_derive_session_id() { FILE: src-tauri/src/proxy/common/tool_adapter.rs type ToolAdapter (line 7) | pub trait ToolAdapter: Send + Sync { method matches (line 15) | fn matches(&self, tool_name: &str) -> bool; method pre_process (line 26) | fn pre_process(&self, _schema: &mut Value) -> Result<(), String> { method post_process (line 39) | fn post_process(&self, _schema: &mut Value) -> Result<(), String> { method matches (line 69) | fn matches(&self, tool_name: &str) -> bool { method pre_process (line 73) | fn pre_process(&self, schema: &mut Value) -> Result<(), String> { function append_hint_to_schema (line 45) | pub fn append_hint_to_schema(schema: &mut Value, hint: &str) { type TestAdapter (line 66) | struct TestAdapter; function test_adapter_matches (line 80) | fn test_adapter_matches() { function test_append_hint (line 87) | fn test_append_hint() { FILE: src-tauri/src/proxy/common/tool_adapters/pencil.rs type PencilAdapter (line 10) | pub struct PencilAdapter; method handle_visual_properties (line 31) | fn handle_visual_properties(&self, map: &mut serde_json::Map bool { method pre_process (line 17) | fn pre_process(&self, schema: &mut Value) -> Result<(), String> { function test_pencil_adapter_matches (line 102) | fn test_pencil_adapter_matches() { function test_visual_properties_handling (line 110) | fn test_visual_properties_handling() { function test_path_parameter_optimization (line 135) | fn test_path_parameter_optimization() { FILE: src-tauri/src/proxy/common/utils.rs function generate_random_id (line 3) | pub fn generate_random_id() -> String { function _deprecated_infer_quota_group (line 14) | pub fn _deprecated_infer_quota_group(model: &str) -> String { FILE: src-tauri/src/proxy/config.rs function normalize_proxy_url (line 11) | pub fn normalize_proxy_url(url: &str) -> String { function get_thinking_budget_config (line 30) | pub fn get_thinking_budget_config() -> ThinkingBudgetConfig { function update_thinking_budget_config (line 39) | pub fn update_thinking_budget_config(config: ThinkingBudgetConfig) { function get_global_system_prompt (line 67) | pub fn get_global_system_prompt() -> GlobalSystemPromptConfig { function update_global_system_prompt_config (line 76) | pub fn update_global_system_prompt_config(config: GlobalSystemPromptConf... function get_image_thinking_mode (line 102) | pub fn get_image_thinking_mode() -> String { function update_image_thinking_mode (line 110) | pub fn update_image_thinking_mode(mode: Option) { type GlobalSystemPromptConfig (line 126) | pub struct GlobalSystemPromptConfig { method default (line 136) | fn default() -> Self { type ProxyAuthMode (line 146) | pub enum ProxyAuthMode { method default (line 154) | fn default() -> Self { type ZaiDispatchMode (line 161) | pub enum ZaiDispatchMode { method default (line 173) | fn default() -> Self { type ZaiModelDefaults (line 179) | pub struct ZaiModelDefaults { method default (line 192) | fn default() -> Self { type ZaiMcpConfig (line 202) | pub struct ZaiMcpConfig { method default (line 214) | fn default() -> Self { type ZaiConfig (line 225) | pub struct ZaiConfig { method default (line 245) | fn default() -> Self { type ExperimentalConfig (line 260) | pub struct ExperimentalConfig { method default (line 293) | fn default() -> Self { function default_threshold_l1 (line 306) | fn default_threshold_l1() -> f32 { function default_threshold_l2 (line 309) | fn default_threshold_l2() -> f32 { function default_threshold_l3 (line 312) | fn default_threshold_l3() -> f32 { type ThinkingBudgetMode (line 320) | pub enum ThinkingBudgetMode { method default (line 332) | fn default() -> Self { type ThinkingBudgetConfig (line 339) | pub struct ThinkingBudgetConfig { method default (line 352) | fn default() -> Self { function default_thinking_budget_custom_value (line 361) | fn default_thinking_budget_custom_value() -> u32 { function default_true (line 365) | fn default_true() -> bool { function default_false (line 369) | fn default_false() -> bool { type DebugLoggingConfig (line 374) | pub struct DebugLoggingConfig { method default (line 382) | fn default() -> Self { type IpBlacklistConfig (line 392) | pub struct IpBlacklistConfig { method default (line 403) | fn default() -> Self { function default_block_message (line 411) | fn default_block_message() -> String { type IpWhitelistConfig (line 417) | pub struct IpWhitelistConfig { method default (line 428) | fn default() -> Self { type SecurityMonitorConfig (line 438) | pub struct SecurityMonitorConfig { method default (line 449) | fn default() -> Self { type ProxyConfig (line 459) | pub struct ProxyConfig { method get_bind_address (line 623) | pub fn get_bind_address(&self) -> &str { type UpstreamProxyConfig (line 562) | pub struct UpstreamProxyConfig { method default (line 570) | fn default() -> Self { function default_request_timeout (line 599) | fn default_request_timeout() -> u64 { function default_zai_base_url (line 603) | fn default_zai_base_url() -> String { function default_zai_opus_model (line 607) | fn default_zai_opus_model() -> String { function default_zai_sonnet_model (line 611) | fn default_zai_sonnet_model() -> String { function default_zai_haiku_model (line 615) | fn default_zai_haiku_model() -> String { type ProxyAuth (line 634) | pub struct ProxyAuth { type ProxyEntry (line 645) | pub struct ProxyEntry { type ProxyPoolConfig (line 662) | pub struct ProxyPoolConfig { method default (line 675) | fn default() -> Self { type ProxySelectionStrategy (line 691) | pub enum ProxySelectionStrategy { function test_normalize_proxy_url (line 709) | fn test_normalize_proxy_url() { FILE: src-tauri/src/proxy/debug_logger.rs function build_filename (line 8) | fn build_filename(prefix: &str, trace_id: Option<&str>) -> String { function resolve_output_dir (line 14) | fn resolve_output_dir(cfg: &DebugLoggingConfig) -> Option { function write_debug_payload (line 24) | pub async fn write_debug_payload( function is_enabled (line 62) | pub fn is_enabled(cfg: &DebugLoggingConfig) -> bool { function parse_sse_stream (line 67) | fn parse_sse_stream(raw: &str) -> (String, String) { function wrap_stream_with_debug (line 130) | pub fn wrap_stream_with_debug( FILE: src-tauri/src/proxy/droid_sync.rs constant CREATE_NO_WINDOW (line 12) | const CREATE_NO_WINDOW: u32 = 0x08000000; constant DROID_DIR (line 14) | const DROID_DIR: &str = ".factory"; constant DROID_CONFIG_FILE (line 15) | const DROID_CONFIG_FILE: &str = "settings.json"; constant BACKUP_SUFFIX (line 16) | const BACKUP_SUFFIX: &str = ".antigravity.bak"; constant AG_ID_PREFIX (line 17) | const AG_ID_PREFIX: &str = "custom:AG-"; type DroidStatus (line 20) | pub struct DroidStatus { function get_droid_dir (line 30) | fn get_droid_dir() -> Option { function get_config_path (line 34) | fn get_config_path() -> Option { function find_in_path (line 38) | fn find_in_path(executable: &str) -> Option { function resolve_droid_path (line 69) | fn resolve_droid_path() -> Option { function extract_version (line 113) | fn extract_version(raw: &str) -> String { function check_droid_installed (line 140) | pub fn check_droid_installed() -> (bool, Option) { function count_synced_models (line 175) | fn count_synced_models(json: &Value) -> (usize, Option) { function get_sync_status (line 194) | pub fn get_sync_status(_proxy_url: &str) -> (bool, bool, Option,... function create_backup (line 217) | fn create_backup(path: &PathBuf) -> Result<(), String> { function sync_droid_config (line 236) | pub fn sync_droid_config(full_custom_models: Vec) -> Result Result<(), String> { function read_droid_config_content (line 290) | pub fn read_droid_config_content() -> Result { function get_droid_sync_status (line 305) | pub async fn get_droid_sync_status(proxy_url: String) -> Result Result<(), String> { function get_droid_config_content (line 337) | pub async fn get_droid_config_content() -> Result { FILE: src-tauri/src/proxy/handlers/audio.rs function handle_audio_transcription (line 14) | pub async fn handle_audio_transcription( FILE: src-tauri/src/proxy/handlers/claude.rs type ThinkingHint (line 34) | struct ThinkingHint { function extract_thinking_hint (line 41) | fn extract_thinking_hint(body: &Value) -> ThinkingHint { function level_to_budget (line 84) | fn level_to_budget(level: &str, cap: u64) -> u32 { function level_to_effort (line 96) | fn level_to_effort(level: &str) -> String { function apply_thinking_hints (line 106) | fn apply_thinking_hints( constant MAX_RETRY_ATTEMPTS (line 160) | const MAX_RETRY_ATTEMPTS: usize = 3; constant INTERNAL_BACKGROUND_TASK (line 164) | const INTERNAL_BACKGROUND_TASK: &str = "internal-background-task"; constant CONTEXT_SUMMARY_PROMPT (line 169) | const CONTEXT_SUMMARY_PROMPT: &str = r#"You are a context compression sp... function handle_messages (line 245) | pub async fn handle_messages( function handle_list_models (line 1411) | pub async fn handle_list_models(State(state): State) -> impl I... function handle_count_tokens (line 1435) | pub async fn handle_count_tokens( type BackgroundTaskType (line 1479) | enum BackgroundTaskType { constant TITLE_KEYWORDS (line 1489) | const TITLE_KEYWORDS: &[&str] = &[ constant SUMMARY_KEYWORDS (line 1502) | const SUMMARY_KEYWORDS: &[&str] = &[ constant SUGGESTION_KEYWORDS (line 1515) | const SUGGESTION_KEYWORDS: &[&str] = &[ constant SYSTEM_KEYWORDS (line 1525) | const SYSTEM_KEYWORDS: &[&str] = &[ constant PROBE_KEYWORDS (line 1533) | const PROBE_KEYWORDS: &[&str] = &[ function detect_background_task_type (line 1541) | fn detect_background_task_type(request: &ClaudeRequest) -> Option bool { function extract_last_user_message_for_detection (line 1583) | fn extract_last_user_message_for_detection(request: &ClaudeRequest) -> O... function select_background_model (line 1612) | fn select_background_model(task_type: BackgroundTaskType) -> &'static str { function is_warmup_request (line 1631) | fn is_warmup_request(request: &ClaudeRequest) -> bool { function create_warmup_response (line 1683) | fn create_warmup_response(request: &ClaudeRequest, is_stream: bool) -> R... function call_gemini_sync (line 1754) | async fn call_gemini_sync( function try_compress_with_summary (line 1825) | async fn try_compress_with_summary( FILE: src-tauri/src/proxy/handlers/common.rs type RetryStrategy (line 11) | pub enum RetryStrategy { function determine_retry_strategy (line 23) | pub fn determine_retry_strategy( function apply_retry_strategy (line 79) | pub async fn apply_retry_strategy( function should_rotate_account (line 137) | pub fn should_rotate_account(status_code: u16) -> bool { function handle_detect_model (line 150) | pub async fn handle_detect_model( FILE: src-tauri/src/proxy/handlers/gemini.rs constant MAX_RETRY_ATTEMPTS (line 22) | const MAX_RETRY_ATTEMPTS: usize = 3; function handle_generate (line 26) | pub async fn handle_generate( function handle_list_models (line 651) | pub async fn handle_list_models( function handle_get_model (line 681) | pub async fn handle_get_model(Path(model_name): Path) -> impl In... function handle_count_tokens (line 688) | pub async fn handle_count_tokens( FILE: src-tauri/src/proxy/handlers/mcp.rs function build_client (line 15) | fn build_client( function copy_passthrough_headers (line 32) | fn copy_passthrough_headers(incoming: &HeaderMap) -> HeaderMap { function forward_mcp (line 46) | async fn forward_mcp( function handle_web_search_prime (line 116) | pub async fn handle_web_search_prime( function handle_web_reader (line 138) | pub async fn handle_web_reader( function mcp_session_id (line 160) | fn mcp_session_id(headers: &HeaderMap) -> Option { function jsonrpc_error (line 168) | fn jsonrpc_error(id: Value, code: i64, message: impl Into) -> Va... function jsonrpc_result (line 179) | fn jsonrpc_result(id: Value, result: Value) -> Value { function is_initialize_request (line 187) | fn is_initialize_request(body: &Value) -> bool { function handle_vision_get (line 191) | async fn handle_vision_get(state: AppState, headers: HeaderMap) -> Respo... function handle_vision_delete (line 221) | async fn handle_vision_delete(state: AppState, headers: HeaderMap) -> Re... function handle_vision_post (line 230) | async fn handle_vision_post(state: AppState, headers: HeaderMap, body: B... function handle_zai_mcp_server (line 377) | pub async fn handle_zai_mcp_server( FILE: src-tauri/src/proxy/handlers/openai.rs constant MAX_RETRY_ATTEMPTS (line 18) | const MAX_RETRY_ATTEMPTS: usize = 3; function handle_chat_completions (line 28) | pub async fn handle_chat_completions( function handle_completions (line 757) | pub async fn handle_completions( function handle_list_models (line 1583) | pub async fn handle_list_models(State(state): State) -> impl I... function handle_chat_redirection (line 1608) | pub async fn handle_chat_redirection( function intercept_chat_to_image (line 1616) | async fn intercept_chat_to_image( function handle_images_generations (line 1741) | pub async fn handle_images_generations( function handle_images_generations_internal (line 1759) | pub async fn handle_images_generations_internal( function handle_images_edits (line 2058) | pub async fn handle_images_edits( FILE: src-tauri/src/proxy/handlers/warmup.rs type WarmupRequest (line 23) | pub struct WarmupRequest { type WarmupResponse (line 36) | pub struct WarmupResponse { function handle_warmup (line 44) | pub async fn handle_warmup( FILE: src-tauri/src/proxy/mappers/claude/collector.rs type SseEvent (line 12) | struct SseEvent { function parse_sse_line (line 18) | fn parse_sse_line(line: &str) -> Option<(String, String)> { function collect_stream_to_json (line 32) | pub async fn collect_stream_to_json( function test_collect_simple_text_response (line 240) | async fn test_collect_simple_text_response() { function test_collect_thinking_response_with_signature (line 272) | async fn test_collect_thinking_response_with_signature() { FILE: src-tauri/src/proxy/mappers/claude/mod.rs function create_claude_sse_stream (line 25) | pub fn create_claude_sse_stream( function process_sse_line (line 177) | fn process_sse_line(line: &str, state: &mut StreamingState, trace_id: &s... function emit_force_stop (line 305) | pub fn emit_force_stop(state: &mut StreamingState) -> Vec { function process_grounding_metadata (line 321) | fn process_grounding_metadata( function test_process_sse_line_done (line 446) | fn test_process_sse_line_done() { function test_process_sse_line_with_text (line 461) | fn test_process_sse_line_with_text() { function test_thinking_only_interruption_recovery (line 484) | async fn test_thinking_only_interruption_recovery() { FILE: src-tauri/src/proxy/mappers/claude/models.rs type ClaudeRequest (line 8) | pub struct ClaudeRequest { type ThinkingConfig (line 41) | pub struct ThinkingConfig { type SystemPrompt (line 55) | pub enum SystemPrompt { type SystemBlock (line 61) | pub struct SystemBlock { type Message (line 69) | pub struct Message { type MessageContent (line 76) | pub enum MessageContent { type ContentBlock (line 84) | pub enum ContentBlock { type ImageSource (line 148) | pub struct ImageSource { type DocumentSource (line 156) | pub struct DocumentSource { type Tool (line 165) | pub struct Tool { method is_web_search (line 182) | pub fn is_web_search(&self) -> bool { method get_name (line 200) | pub fn get_name(&self) -> String { type Metadata (line 215) | pub struct Metadata { type OutputConfig (line 223) | pub struct OutputConfig { type ClaudeResponse (line 231) | pub struct ClaudeResponse { type Usage (line 246) | pub struct Usage { type GeminiContent (line 261) | pub struct GeminiContent { type GeminiPart (line 268) | pub struct GeminiPart { type FunctionCall (line 293) | pub struct FunctionCall { type FunctionResponse (line 302) | pub struct FunctionResponse { type InlineData (line 310) | pub struct InlineData { type GeminiResponse (line 318) | pub struct GeminiResponse { type Candidate (line 333) | pub struct Candidate { type UsageMetadata (line 347) | pub struct UsageMetadata { type GroundingMetadata (line 366) | pub struct GroundingMetadata { type GroundingChunk (line 385) | pub struct GroundingChunk { type WebSource (line 391) | pub struct WebSource { type GroundingSupport (line 399) | pub struct GroundingSupport { type TextSegment (line 411) | pub struct TextSegment { type SearchEntryPoint (line 423) | pub struct SearchEntryPoint { FILE: src-tauri/src/proxy/mappers/claude/request.rs type SafetyThreshold (line 16) | pub enum SafetyThreshold { method from_env (line 31) | pub fn from_env() -> Self { method to_gemini_threshold (line 43) | pub fn to_gemini_threshold(&self) -> &'static str { function build_safety_settings (line 55) | fn build_safety_settings() -> Value { function clean_cache_control_from_messages (line 77) | pub fn clean_cache_control_from_messages(messages: &mut [Message]) { function deep_clean_cache_control (line 154) | fn deep_clean_cache_control(value: &mut Value) { function sort_thinking_blocks_first (line 179) | fn sort_thinking_blocks_first(messages: &mut [Message]) { function merge_consecutive_messages (line 259) | pub fn merge_consecutive_messages(messages: &mut Vec) { function reorder_gemini_parts (line 304) | fn reorder_gemini_parts(parts: &mut Vec) { function transform_claude_request_in (line 335) | pub fn transform_claude_request_in( function should_enable_thinking_by_default (line 696) | fn should_enable_thinking_by_default(model: &str) -> bool { constant MIN_SIGNATURE_LENGTH (line 745) | const MIN_SIGNATURE_LENGTH: usize = 50; function has_valid_signature_for_function_calls (line 751) | fn has_valid_signature_for_function_calls( function build_system_instruction (line 811) | fn build_system_instruction( function build_contents (line 899) | fn build_contents( function build_google_content (line 1471) | fn build_google_content( function build_google_contents (line 1556) | fn build_google_contents( function merge_adjacent_roles (line 1636) | fn merge_adjacent_roles(mut contents: Vec) -> Vec { function build_tools (line 1671) | fn build_tools( function build_generation_config (line 1768) | fn build_generation_config( function clean_thinking_fields_recursive (line 1988) | pub fn clean_thinking_fields_recursive(val: &mut Value) { function is_model_compatible (line 2007) | fn is_model_compatible(cached: &str, target: &str) -> bool { function test_ephemeral_injection_debug (line 2059) | fn test_ephemeral_injection_debug() { function test_simple_request (line 2097) | fn test_simple_request() { function test_clean_json_schema (line 2127) | fn test_clean_json_schema() { function test_complex_tool_result (line 2171) | fn test_complex_tool_result() { function test_cache_control_cleanup (line 2237) | fn test_cache_control_cleanup() { function test_thinking_mode_auto_disable_on_tool_use_history (line 2298) | fn test_thinking_mode_auto_disable_on_tool_use_history() { function test_thinking_block_not_prepend_when_disabled (line 2379) | fn test_thinking_block_not_prepend_when_disabled() { function test_thinking_block_empty_content_fix (line 2429) | fn test_thinking_block_empty_content_fix() { function test_redacted_thinking_degradation (line 2483) | fn test_redacted_thinking_degradation() { function test_thinking_blocks_sorted_first_after_compression (line 2531) | fn test_thinking_blocks_sorted_first_after_compression() { function test_thinking_blocks_no_reorder_when_already_first (line 2582) | fn test_thinking_blocks_no_reorder_when_already_first() { function test_merge_consecutive_messages (line 2615) | fn test_merge_consecutive_messages() { function test_default_max_tokens (line 2683) | fn test_default_max_tokens() { function test_claude_flash_thinking_budget_capping (line 2714) | fn test_claude_flash_thinking_budget_capping() { function test_gemini_pro_thinking_support (line 2775) | fn test_gemini_pro_thinking_support() { function test_gemini_pro_default_thinking (line 2819) | fn test_gemini_pro_default_thinking() { function test_claude_image_thinking_mode_disabled (line 2853) | fn test_claude_image_thinking_mode_disabled() { function test_claude_adaptive_global_config (line 2892) | fn test_claude_adaptive_global_config() { function test_mixed_tools_injection_for_gemini_2_0 (line 2943) | fn test_mixed_tools_injection_for_gemini_2_0() { function test_no_mixed_tools_for_older_gemini (line 2994) | fn test_no_mixed_tools_for_older_gemini() { FILE: src-tauri/src/proxy/mappers/claude/response.rs function remap_function_call_args (line 10) | fn remap_function_call_args(tool_name: &str, args: &mut serde_json::Valu... type NonStreamingProcessor (line 149) | pub struct NonStreamingProcessor { method new (line 164) | pub fn new(session_id: Option, model_name: String, message_cou... method process (line 181) | pub fn process( method process_part (line 229) | fn process_part(&mut self, part: &GeminiPart) { method process_grounding (line 389) | fn process_grounding(&mut self, grounding: &GroundingMetadata) { method flush_text (line 427) | fn flush_text(&mut self) { method flush_thinking (line 480) | fn flush_thinking(&mut self) { method build_response (line 498) | fn build_response(&self, gemini_response: &GeminiResponse) -> ClaudeRe... function transform_response (line 540) | pub fn transform_response( function test_simple_text_response (line 557) | fn test_simple_text_response() { function test_thinking_with_signature (line 609) | fn test_thinking_with_signature() { FILE: src-tauri/src/proxy/mappers/claude/serde_leak_test.rs function test_claude_request_deserialization_leak (line 5) | fn test_claude_request_deserialization_leak() { FILE: src-tauri/src/proxy/mappers/claude/streaming.rs function remap_function_call_args (line 15) | pub fn remap_function_call_args(name: &str, args: &mut Value) { type BlockType (line 169) | pub enum BlockType { type SignatureManager (line 177) | pub struct SignatureManager { method new (line 182) | pub fn new() -> Self { method store (line 186) | pub fn store(&mut self, signature: Option) { method consume (line 192) | pub fn consume(&mut self) -> Option { method has_pending (line 196) | pub fn has_pending(&self) -> bool { type StreamingState (line 202) | pub struct StreamingState { method new (line 240) | pub fn new() -> Self { method set_client_adapter (line 270) | pub fn set_client_adapter(&mut self, adapter: Option) { method emit (line 280) | pub fn emit(&self, event_type: &str, data: serde_json::Value) -> Bytes { method emit_message_start (line 290) | pub fn emit_message_start(&mut self, raw_json: &serde_json::Value) -> ... method start_block (line 336) | pub fn start_block( method end_block (line 360) | pub fn end_block(&mut self) -> Vec { method emit_delta (line 389) | pub fn emit_delta(&self, delta_type: &str, delta_content: serde_json::... method emit_finish (line 408) | pub fn emit_finish( method mark_tool_used (line 540) | pub fn mark_tool_used(&mut self) { method current_block_type (line 545) | pub fn current_block_type(&self) -> BlockType { method current_block_index (line 550) | pub fn current_block_index(&self) -> usize { method store_signature (line 555) | pub fn store_signature(&mut self, signature: Option) { method set_trailing_signature (line 560) | pub fn set_trailing_signature(&mut self, signature: Option) { method has_trailing_signature (line 565) | pub fn has_trailing_signature(&self) -> bool { method handle_parse_error (line 576) | pub fn handle_parse_error(&mut self, raw_data: &str) -> Vec { method reset_error_state (line 632) | pub fn reset_error_state(&mut self) { method get_error_count (line 639) | pub fn get_error_count(&self) -> usize { type PartProcessor (line 645) | pub struct PartProcessor<'a> { function new (line 650) | pub fn new(state: &'a mut StreamingState) -> Self { function process (line 655) | pub fn process(&mut self, part: &GeminiPart) -> Vec { function process_thinking (line 736) | fn process_thinking(&mut self, text: &str, signature: Option) ->... function process_text (line 829) | fn process_text(&mut self, text: &str, signature: Option) -> Vec... function process_function_call (line 968) | fn process_function_call( function fuzzy_match_mcp_tool (line 1085) | fn fuzzy_match_mcp_tool(hallucinated: &str, registered: &[String]) -> Op... function test_signature_manager (line 1187) | fn test_signature_manager() { function test_streaming_state_emit (line 1200) | fn test_streaming_state_emit() { function test_process_function_call_deltas (line 1210) | fn test_process_function_call_deltas() { function test_fuzzy_match_mcp_tool_exact_suffix (line 1254) | fn test_fuzzy_match_mcp_tool_exact_suffix() { function test_fuzzy_match_mcp_tool_exact_match_no_correction (line 1268) | fn test_fuzzy_match_mcp_tool_exact_match_no_correction() { function test_fuzzy_match_mcp_tool_suffix_contained (line 1281) | fn test_fuzzy_match_mcp_tool_suffix_contained() { function test_fuzzy_match_mcp_tool_token_overlap (line 1293) | fn test_fuzzy_match_mcp_tool_token_overlap() { function test_fuzzy_match_mcp_tool_no_match (line 1306) | fn test_fuzzy_match_mcp_tool_no_match() { function test_fuzzy_match_mcp_tool_no_mcp_tools (line 1317) | fn test_fuzzy_match_mcp_tool_no_mcp_tools() { function test_fuzzy_match_mcp_tool_screenshot (line 1329) | fn test_fuzzy_match_mcp_tool_screenshot() { FILE: src-tauri/src/proxy/mappers/claude/thinking_utils.rs constant MIN_SIGNATURE_LENGTH (line 5) | pub const MIN_SIGNATURE_LENGTH: usize = 50; type ConversationState (line 8) | pub struct ConversationState { function analyze_conversation_state (line 15) | pub fn analyze_conversation_state(messages: &[Message]) -> ConversationS... function close_tool_loop_for_thinking (line 95) | pub fn close_tool_loop_for_thinking(messages: &mut Vec) { function get_signature_family (line 171) | pub fn get_signature_family(signature: &str) -> Option { function filter_invalid_thinking_blocks_with_family (line 176) | pub fn filter_invalid_thinking_blocks_with_family( FILE: src-tauri/src/proxy/mappers/claude/utils.rs function get_context_limit_for_model (line 11) | pub fn get_context_limit_for_model(model: &str) -> u32 { function to_claude_usage (line 21) | pub fn to_claude_usage(usage_metadata: &super::models::UsageMetadata, sc... function test_to_claude_usage (line 109) | fn test_to_claude_usage() { FILE: src-tauri/src/proxy/mappers/common_utils.rs type RequestConfig (line 8) | pub struct RequestConfig { function resolve_request_config (line 19) | pub fn resolve_request_config( function parse_image_config (line 143) | pub fn parse_image_config(model_name: &str) -> (Value, String) { function parse_image_config_with_params (line 162) | pub fn parse_image_config_with_params( function clean_image_model_name (line 242) | fn clean_image_model_name(model_name: &str) -> String { function calculate_aspect_ratio_from_size (line 279) | fn calculate_aspect_ratio_from_size(size: &str) -> &'static str { function inject_google_search_tool (line 339) | pub fn inject_google_search_tool(body: &mut Value, mapped_model: Option<... function deep_clean_undefined (line 383) | pub fn deep_clean_undefined(value: &mut Value, depth: usize) { function detects_networking_tool (line 413) | pub fn detects_networking_tool(tools: &Option>) -> bool { function contains_non_networking_tool (line 480) | pub fn contains_non_networking_tool(tools: &Option>) -> bool { function test_high_quality_model_auto_grounding (line 543) | fn test_high_quality_model_auto_grounding() { function test_gemini_native_tool_detection (line 551) | fn test_gemini_native_tool_detection() { function test_online_suffix_force_grounding (line 561) | fn test_online_suffix_force_grounding() { function test_default_no_grounding (line 570) | fn test_default_no_grounding() { function test_image_model_excluded (line 577) | fn test_image_model_excluded() { function test_image_2k_and_ultrawide_config (line 592) | fn test_image_2k_and_ultrawide_config() { function test_parse_image_config_with_openai_params (line 613) | fn test_parse_image_config_with_openai_params() { function test_clean_image_model_name (line 673) | fn test_clean_image_model_name() { function test_calculate_aspect_ratio_from_size (line 689) | fn test_calculate_aspect_ratio_from_size() { function test_image_config_merging_priority (line 719) | fn test_image_config_merging_priority() { function test_image_size_priority (line 766) | fn test_image_size_priority() { FILE: src-tauri/src/proxy/mappers/common_utils_test_probe.rs function test_custom_web_search_function_downgrade (line 3) | fn test_custom_web_search_function_downgrade() { FILE: src-tauri/src/proxy/mappers/context_manager.rs function estimate_tokens_from_str (line 15) | fn estimate_tokens_from_str(s: &str) -> u32 { type PurificationStrategy (line 41) | pub enum PurificationStrategy { type ContextManager (line 50) | pub struct ContextManager; method purify_history (line 57) | pub fn purify_history(messages: &mut Vec, strategy: Purificat... method strip_thinking_blocks (line 67) | fn strip_thinking_blocks(messages: &mut Vec, protected_last_n... method estimate_token_usage (line 109) | pub fn estimate_token_usage(request: &ClaudeRequest) -> u32 { method compress_thinking_preserve_signature (line 215) | pub fn compress_thinking_preserve_signature( method extract_last_valid_signature (line 283) | pub fn extract_last_valid_signature(messages: &[Message]) -> Option, keep_last_n_rou... type ToolRound (line 363) | struct ToolRound { function identify_tool_rounds (line 370) | fn identify_tool_rounds(messages: &[Message]) -> Vec { function has_tool_use (line 420) | fn has_tool_use(content: &MessageContent) -> bool { function has_tool_result (line 431) | fn has_tool_result(content: &MessageContent) -> bool { function create_test_request (line 446) | fn create_test_request() -> ClaudeRequest { function test_estimate_tokens (line 466) | fn test_estimate_tokens() { function test_purify_history_soft (line 479) | fn test_purify_history_soft() { function test_purify_history_aggressive (line 555) | fn test_purify_history_aggressive() { FILE: src-tauri/src/proxy/mappers/error_classifier.rs function classify_stream_error (line 12) | pub fn classify_stream_error(error: &E) -> (&'stat... function test_classify_timeout_error (line 53) | fn test_classify_timeout_error() { function test_error_message_format (line 64) | fn test_error_message_format() { function test_i18n_keys_format (line 88) | fn test_i18n_keys_format() { FILE: src-tauri/src/proxy/mappers/estimation_calibrator.rs type EstimationCalibrator (line 14) | pub struct EstimationCalibrator { method new (line 27) | pub const fn new() -> Self { method record (line 41) | pub fn record(&self, estimated: u32, actual: u32) { method update_calibration (line 59) | fn update_calibration(&self) { method calibrate (line 90) | pub fn calibrate(&self, estimated: u32) -> u32 { method get_factor (line 97) | pub fn get_factor(&self) -> f32 { method default (line 103) | fn default() -> Self { function get_calibrator (line 114) | pub fn get_calibrator() -> &'static EstimationCalibrator { function test_calibrator_basic (line 123) | fn test_calibrator_basic() { function test_calibrate (line 141) | fn test_calibrate() { function test_zero_handling (line 150) | fn test_zero_handling() { FILE: src-tauri/src/proxy/mappers/gemini/collector.rs function collect_stream_to_json (line 13) | pub async fn collect_stream_to_json( FILE: src-tauri/src/proxy/mappers/gemini/models.rs type V1InternalRequest (line 6) | pub struct V1InternalRequest { FILE: src-tauri/src/proxy/mappers/gemini/wrapper.rs function wrap_request (line 5) | pub fn wrap_request( function test_wrap_request_with_signature (line 537) | fn test_wrap_request_with_signature() { function unwrap_response (line 568) | pub fn unwrap_response(response: &Value) -> Value { function inject_ids_to_response (line 576) | pub fn inject_ids_to_response(response: &mut Value, model_name: &str) { function test_wrap_request (line 617) | fn test_wrap_request() { function test_unwrap_response (line 630) | fn test_unwrap_response() { function test_antigravity_identity_injection_with_role (line 643) | fn test_antigravity_identity_injection_with_role() { function test_gemini_flash_thinking_budget_capping (line 660) | fn test_gemini_flash_thinking_budget_capping() { function test_image_thinking_mode_disabled (line 707) | fn test_image_thinking_mode_disabled() { function test_user_instruction_preservation (line 732) | fn test_user_instruction_preservation() { function test_duplicate_prevention (line 764) | fn test_duplicate_prevention() { function test_image_generation_with_reference_images (line 785) | fn test_image_generation_with_reference_images() { function test_gemini_pro_thinking_budget_processing (line 815) | fn test_gemini_pro_thinking_budget_processing() { function test_claude_no_root_thinking_injection (line 864) | fn test_claude_no_root_thinking_injection() { function test_gemini_thinking_injection_default (line 898) | fn test_gemini_thinking_injection_default() { function test_gemini_pro_auto_inject_thinking (line 916) | fn test_gemini_pro_auto_inject_thinking() { function test_openai_image_params_support (line 959) | fn test_openai_image_params_support() { function test_mixed_tools_injection_gemini_native (line 995) | fn test_mixed_tools_injection_gemini_native() { FILE: src-tauri/src/proxy/mappers/model_limits.rs function get_model_output_limit (line 12) | pub fn get_model_output_limit(model_name: &str, dynamic_limit: Option( FILE: src-tauri/src/proxy/mappers/openai/models.rs type OpenAIRequest (line 7) | pub struct OpenAIRequest { type ThinkingConfig (line 50) | pub struct ThinkingConfig { type ResponseFormat (line 61) | pub struct ResponseFormat { type OpenAIContent (line 67) | pub enum OpenAIContent { type OpenAIContentBlock (line 74) | pub enum OpenAIContentBlock { type OpenAIImageUrl (line 84) | pub struct OpenAIImageUrl { type AudioUrlContent (line 91) | pub struct AudioUrlContent { type OpenAIMessage (line 96) | pub struct OpenAIMessage { type ToolCall (line 111) | pub struct ToolCall { type ToolFunction (line 118) | pub struct ToolFunction { type OpenAIResponse (line 124) | pub struct OpenAIResponse { type Choice (line 135) | pub struct Choice { type OpenAIUsage (line 142) | pub struct OpenAIUsage { type PromptTokensDetails (line 153) | pub struct PromptTokensDetails { type CompletionTokensDetails (line 159) | pub struct CompletionTokensDetails { FILE: src-tauri/src/proxy/mappers/openai/request.rs function transform_openai_request (line 8) | pub fn transform_openai_request( function enforce_uppercase_types (line 745) | fn enforce_uppercase_types(value: &mut Value) { function test_issue_1592_gemini_3_pro_budget_capping (line 776) | fn test_issue_1592_gemini_3_pro_budget_capping() { function test_issue_1602_custom_mode_gemini_capping (line 800) | fn test_issue_1602_custom_mode_gemini_capping() { function test_transform_openai_request_multimodal (line 855) | fn test_transform_openai_request_multimodal() { function test_gemini_pro_thinking_injection (line 896) | fn test_gemini_pro_thinking_injection() { function test_gemini_3_pro_image_not_thinking (line 938) | fn test_gemini_3_pro_image_not_thinking() { function test_default_max_tokens_openai (line 965) | fn test_default_max_tokens_openai() { function test_flash_thinking_budget_capping (line 1002) | fn test_flash_thinking_budget_capping() { function test_vertex_ai_sentinel_injection (line 1046) | fn test_vertex_ai_sentinel_injection() { function test_issue_2167_gemini_flash_thinking_signature (line 1085) | fn test_issue_2167_gemini_flash_thinking_signature() { function test_openai_image_thinking_mode_disabled (line 1128) | fn test_openai_image_thinking_mode_disabled() { function test_mixed_tools_injection_openai (line 1163) | fn test_mixed_tools_injection_openai() { FILE: src-tauri/src/proxy/mappers/openai/response.rs function transform_openai_response (line 5) | pub fn transform_openai_response(gemini_response: &Value, session_id: Op... function test_transform_openai_response (line 224) | fn test_transform_openai_response() { function test_usage_metadata_mapping (line 247) | fn test_usage_metadata_mapping() { function test_response_without_usage_metadata (line 275) | fn test_response_without_usage_metadata() { FILE: src-tauri/src/proxy/mappers/openai/streaming.rs function store_thought_signature (line 14) | pub fn store_thought_signature(sig: &str, session_id: &str, message_coun... function extract_usage_metadata (line 35) | fn extract_usage_metadata(u: &Value) -> Option( function create_legacy_sse_stream (line 323) | pub fn create_legacy_sse_stream( function create_codex_sse_stream (line 425) | pub fn create_codex_sse_stream( function test_openai_streaming_usage_only_at_end (line 665) | async fn test_openai_streaming_usage_only_at_end() { FILE: src-tauri/src/proxy/mappers/openai/thinking_recovery.rs function strip_all_thinking_blocks (line 4) | pub fn strip_all_thinking_blocks(contents: Vec) -> Vec { function close_tool_loop_for_thinking (line 25) | pub fn close_tool_loop_for_thinking(contents: Vec) -> Vec { FILE: src-tauri/src/proxy/mappers/signature_store.rs function get_thought_sig_storage (line 8) | fn get_thought_sig_storage() -> &'static Mutex> { function store_thought_signature (line 18) | pub fn store_thought_signature(sig: &str) { function get_thought_signature (line 43) | pub fn get_thought_signature() -> Option { function take_thought_signature (line 53) | pub fn take_thought_signature() -> Option { function clear_thought_signature (line 63) | pub fn clear_thought_signature() { function test_signature_storage (line 74) | fn test_signature_storage() { FILE: src-tauri/src/proxy/mappers/tool_result_compressor.rs constant MAX_TOOL_RESULT_CHARS (line 13) | const MAX_TOOL_RESULT_CHARS: usize = 200_000; constant SNAPSHOT_DETECTION_THRESHOLD (line 16) | const SNAPSHOT_DETECTION_THRESHOLD: usize = 20_000; constant SNAPSHOT_MAX_CHARS (line 19) | const SNAPSHOT_MAX_CHARS: usize = 16_000; constant SNAPSHOT_HEAD_RATIO (line 22) | const SNAPSHOT_HEAD_RATIO: f64 = 0.7; constant SNAPSHOT_TAIL_RATIO (line 26) | const SNAPSHOT_TAIL_RATIO: f64 = 0.3; function compact_tool_result_text (line 34) | pub fn compact_tool_result_text(text: &str, max_chars: usize) -> String { function compact_saved_output_notice (line 77) | fn compact_saved_output_notice(text: &str, max_chars: usize) -> Option Option String { function deep_clean_html (line 221) | fn deep_clean_html(html: &str) -> String { function sanitize_tool_result_blocks (line 255) | pub fn sanitize_tool_result_blocks(blocks: &mut Vec) { function test_truncate_text (line 313) | fn test_truncate_text() { function test_truncate_text_no_truncation (line 322) | fn test_truncate_text_no_truncation() { function test_compact_browser_snapshot (line 329) | fn test_compact_browser_snapshot() { function test_compact_saved_output_notice (line 340) | fn test_compact_saved_output_notice() { function test_sanitize_tool_result_blocks (line 353) | fn test_sanitize_tool_result_blocks() { FILE: src-tauri/src/proxy/middleware/auth.rs function auth_middleware (line 15) | pub async fn auth_middleware( function admin_auth_middleware (line 24) | pub async fn admin_auth_middleware( function auth_middleware_internal (line 33) | async fn auth_middleware_internal( type UserTokenIdentity (line 241) | pub struct UserTokenIdentity { function test_admin_auth_with_password (line 254) | async fn test_admin_auth_with_password() { function test_auth_placeholder (line 276) | fn test_auth_placeholder() { FILE: src-tauri/src/proxy/middleware/cors.rs function cors_layer (line 6) | pub fn cors_layer() -> CorsLayer { function test_cors_layer_creation (line 28) | fn test_cors_layer_creation() { FILE: src-tauri/src/proxy/middleware/ip_filter.rs function ip_filter_middleware (line 11) | pub async fn ip_filter_middleware( function extract_client_ip (line 147) | fn extract_client_ip(request: &Request) -> Option { function create_blocked_response (line 173) | fn create_blocked_response(ip: &str, message: &str) -> Response { FILE: src-tauri/src/proxy/middleware/logging.rs function test_logging_middleware (line 7) | fn test_logging_middleware() { FILE: src-tauri/src/proxy/middleware/monitor.rs constant MAX_REQUEST_LOG_SIZE (line 14) | const MAX_REQUEST_LOG_SIZE: usize = 100 * 1024 * 1024; constant MAX_RESPONSE_LOG_SIZE (line 15) | const MAX_RESPONSE_LOG_SIZE: usize = 100 * 1024 * 1024; function record_user_token_usage (line 18) | fn record_user_token_usage( function monitor_middleware (line 36) | pub async fn monitor_middleware( FILE: src-tauri/src/proxy/middleware/service_status.rs function service_status_middleware (line 9) | pub async fn service_status_middleware( FILE: src-tauri/src/proxy/model_specs.rs type ModelSpec (line 7) | pub struct ModelSpec { type SpecsConfig (line 14) | struct SpecsConfig { function resolve_alias (line 25) | pub fn resolve_alias(model_id: &str) -> String { function get_max_output_tokens (line 30) | pub fn get_max_output_tokens(model_id: &str, token: Option<&ProxyToken>)... function get_thinking_budget (line 56) | pub fn get_thinking_budget(model_id: &str, _token: Option<&ProxyToken>) ... function is_thinking_model (line 76) | pub fn is_thinking_model(model_id: &str) -> bool { FILE: src-tauri/src/proxy/monitor.rs type ProxyRequestLog (line 8) | pub struct ProxyRequestLog { type ProxyStats (line 29) | pub struct ProxyStats { type ProxyMonitor (line 35) | pub struct ProxyMonitor { method new (line 44) | pub fn new(max_logs: usize, app_handle: Option) -> S... method set_enabled (line 73) | pub fn set_enabled(&self, enabled: bool) { method is_enabled (line 77) | pub fn is_enabled(&self) -> bool { method log_request (line 81) | pub async fn log_request(&self, log: ProxyRequestLog) { method get_logs (line 187) | pub async fn get_logs(&self, limit: usize) -> Vec { method get_stats (line 209) | pub async fn get_stats(&self) -> ProxyStats { method get_logs_filtered (line 227) | pub async fn get_logs_filtered( method clear (line 248) | pub async fn clear(&self) { FILE: src-tauri/src/proxy/opencode_sync.rs constant CREATE_NO_WINDOW (line 13) | const CREATE_NO_WINDOW: u32 = 0x08000000; constant OPENCODE_DIR (line 15) | const OPENCODE_DIR: &str = ".config/opencode"; constant OPENCODE_CONFIG_FILE (line 16) | const OPENCODE_CONFIG_FILE: &str = "opencode.json"; constant ANTIGRAVITY_CONFIG_FILE (line 17) | const ANTIGRAVITY_CONFIG_FILE: &str = "antigravity.json"; constant ANTIGRAVITY_ACCOUNTS_FILE (line 18) | const ANTIGRAVITY_ACCOUNTS_FILE: &str = "antigravity-accounts.json"; constant BACKUP_SUFFIX (line 19) | const BACKUP_SUFFIX: &str = ".antigravity-manager.bak"; constant OLD_BACKUP_SUFFIX (line 20) | const OLD_BACKUP_SUFFIX: &str = ".antigravity.bak"; constant ANTIGRAVITY_PROVIDER_ID (line 22) | const ANTIGRAVITY_PROVIDER_ID: &str = "antigravity-manager"; type VariantType (line 26) | enum VariantType { type ModelDef (line 39) | struct ModelDef { function build_model_catalog (line 51) | fn build_model_catalog() -> Vec { function normalize_opencode_base_url (line 183) | fn normalize_opencode_base_url(input: &str) -> String { type OpencodeStatus (line 193) | pub struct OpencodeStatus { type PluginAccount (line 204) | struct PluginAccount { type PluginAccountsFile (line 240) | struct PluginAccountsFile { function get_opencode_dir (line 249) | fn get_opencode_dir() -> Option { function get_config_paths (line 253) | fn get_config_paths() -> Option<(PathBuf, PathBuf, PathBuf)> { function extract_version (line 263) | fn extract_version(raw: &str) -> String { function is_valid_version (line 296) | fn is_valid_version(s: &str) -> bool { function resolve_opencode_path (line 303) | fn resolve_opencode_path() -> Option { function resolve_opencode_path_windows (line 322) | fn resolve_opencode_path_windows() -> Option { function resolve_opencode_path_unix (line 382) | fn resolve_opencode_path_unix() -> Option { function scan_nvm_directory (line 441) | fn scan_nvm_directory(nvm_path: impl AsRef) -> Option) -> Opti... function scan_fnm_versions (line 492) | fn scan_fnm_versions(versions_dir: impl AsRef) -> Optio... function find_in_path (line 514) | fn find_in_path(executable: &str) -> Option { function run_opencode_version (line 546) | fn run_opencode_version(opencode_path: &PathBuf) -> Option { function run_opencode_version (line 593) | fn run_opencode_version(opencode_path: &PathBuf) -> Option { function check_opencode_installed (line 624) | pub fn check_opencode_installed() -> (bool, Option) { function get_provider_options (line 650) | fn get_provider_options<'a>(value: &'a Value, provider_name: &str) -> Op... function get_sync_status (line 656) | pub fn get_sync_status(proxy_url: &str) -> (bool, bool, Option) { function create_backup (line 712) | fn create_backup(path: &PathBuf) -> Result<(), String> { function restore_backup_to_target (line 733) | fn restore_backup_to_target(backup_path: &PathBuf, target_path: &PathBuf... function ensure_object (line 743) | fn ensure_object(value: &mut Value, key: &str) { function ensure_provider_object (line 754) | fn ensure_provider_object(provider: &mut serde_json::Map,... function merge_provider_options (line 765) | fn merge_provider_options(provider: &mut Value, base_url: &str, api_key:... function ensure_provider_string_field (line 776) | fn ensure_provider_string_field(provider: &mut Value, key: &str, value: ... function build_claude_thinking_variant (line 783) | fn build_claude_thinking_variant(budget: u32) -> Value { function build_gemini3_variant (line 797) | fn build_gemini3_variant(level: &str) -> Value { function build_gemini25_thinking_variant (line 804) | fn build_gemini25_thinking_variant(budget: u32) -> Value { function build_variants_object (line 818) | fn build_variants_object(variant_type: Option) -> Option Value { function merge_catalog_models (line 885) | fn merge_catalog_models(provider: &mut Value, model_ids: Option<&[&str]>) { function sync_opencode_config (line 929) | pub fn sync_opencode_config( function sync_accounts_file (line 972) | fn sync_accounts_file(accounts_path: &PathBuf) -> Result<(), String> { function restore_opencode_config (line 1125) | pub fn restore_opencode_config() -> Result<(), String> { function apply_sync_to_config (line 1173) | fn apply_sync_to_config( function apply_clear_to_config (line 1206) | fn apply_clear_to_config( function test_extract_version_opencode_format (line 1246) | fn test_extract_version_opencode_format() { function test_extract_version_codex_cli_format (line 1252) | fn test_extract_version_codex_cli_format() { function test_extract_version_simple (line 1258) | fn test_extract_version_simple() { function test_extract_version_unknown (line 1264) | fn test_extract_version_unknown() { function test_normalize_opencode_base_url_without_v1 (line 1270) | fn test_normalize_opencode_base_url_without_v1() { function test_normalize_opencode_base_url_with_v1 (line 1276) | fn test_normalize_opencode_base_url_with_v1() { function test_normalize_opencode_base_url_with_whitespace (line 1282) | fn test_normalize_opencode_base_url_with_whitespace() { function test_normalize_opencode_base_url_no_double_v1 (line 1288) | fn test_normalize_opencode_base_url_no_double_v1() { function test_sync_preserves_existing_providers (line 1297) | fn test_sync_preserves_existing_providers() { function test_sync_creates_antigravity_provider (line 1329) | fn test_sync_creates_antigravity_provider() { function test_sync_creates_models (line 1349) | fn test_sync_creates_models() { function test_sync_with_filtered_models (line 1371) | fn test_sync_with_filtered_models() { function test_clear_removes_antigravity_provider (line 1389) | fn test_clear_removes_antigravity_provider() { function test_clear_legacy_removes_antigravity_models (line 1407) | fn test_clear_legacy_removes_antigravity_models() { function test_clear_legacy_removes_options_when_baseurl_matches (line 1433) | fn test_clear_legacy_removes_options_when_baseurl_matches() { function test_clear_legacy_preserves_options_when_baseurl_different (line 1452) | fn test_clear_legacy_preserves_options_when_baseurl_different() { function test_clear_legacy_without_proxy_url_skips_cleanup (line 1473) | fn test_clear_legacy_without_proxy_url_skips_cleanup() { function test_base_url_matches_with_v1 (line 1497) | fn test_base_url_matches_with_v1() { function test_base_url_matches_without_v1 (line 1504) | fn test_base_url_matches_without_v1() { function test_base_url_matches_different_urls (line 1510) | fn test_base_url_matches_different_urls() { function test_clear_removes_empty_provider (line 1516) | fn test_clear_removes_empty_provider() { function read_opencode_config_content (line 1532) | pub fn read_opencode_config_content(file_name: Option) -> Result... function get_opencode_sync_status (line 1567) | pub async fn get_opencode_sync_status(proxy_url: String) -> Result Result<(), String> { type GetOpencodeConfigRequest (line 1602) | pub struct GetOpencodeConfigRequest { function get_opencode_config_content (line 1607) | pub async fn get_opencode_config_content(request: GetOpencodeConfigReque... constant ANTIGRAVITY_MODEL_IDS (line 1612) | const ANTIGRAVITY_MODEL_IDS: &[&str] = &[ function base_url_matches (line 1631) | fn base_url_matches(config_url: &str, proxy_url: &str) -> bool { function clear_opencode_config (line 1638) | fn clear_opencode_config(proxy_url: Option, clear_legacy: bool) ... function cleanup_legacy_provider (line 1687) | fn cleanup_legacy_provider(provider: &mut Value, proxy_url: &str) { function execute_opencode_clear (line 1725) | pub async fn execute_opencode_clear( FILE: src-tauri/src/proxy/project_resolver.rs function fetch_project_id (line 5) | pub async fn fetch_project_id(access_token: &str) -> Result... function join_base_url (line 39) | fn join_base_url(base: &str, path: &str) -> Result { function build_client (line 49) | fn build_client( function copy_passthrough_headers (line 71) | fn copy_passthrough_headers(incoming: &HeaderMap) -> HeaderMap { function set_zai_auth (line 92) | fn set_zai_auth(headers: &mut HeaderMap, incoming: &HeaderMap, api_key: ... function deep_remove_cache_control (line 115) | pub fn deep_remove_cache_control(value: &mut Value) { function forward_anthropic_json (line 134) | pub async fn forward_anthropic_json( FILE: src-tauri/src/proxy/proxy_pool.rs function get_global_proxy_pool (line 17) | pub fn get_global_proxy_pool() -> Option> { function init_global_proxy_pool (line 22) | pub fn init_global_proxy_pool(config: Arc>) -> A... type PoolProxyConfig (line 31) | pub struct PoolProxyConfig { type ProxyPoolManager (line 37) | pub struct ProxyPoolManager { method new (line 51) | pub fn new(config: Arc>) -> Self { method get_effective_client (line 79) | pub async fn get_effective_client(&self, account_id: Option<&str>, tim... method get_effective_standard_client (line 127) | pub async fn get_effective_standard_client(&self, account_id: Option<&... method get_proxy_for_account (line 173) | pub async fn get_proxy_for_account( method get_bound_proxy (line 198) | async fn get_bound_proxy( method select_proxy_from_pool (line 218) | async fn select_proxy_from_pool( method select_round_robin (line 271) | fn select_round_robin<'a>(&self, proxies: &[&'a ProxyEntry]) -> Option... method select_random (line 277) | fn select_random<'a>(&self, proxies: &[&'a ProxyEntry]) -> Option<&'a ... method select_by_priority (line 284) | fn select_by_priority<'a>(&self, proxies: &[&'a ProxyEntry]) -> Option... method select_least_connections (line 289) | fn select_least_connections<'a>(&self, proxies: &[&'a ProxyEntry]) -> ... method select_weighted (line 295) | fn select_weighted<'a>(&self, proxies: &[&'a ProxyEntry]) -> Option<&'... method build_proxy_config (line 301) | fn build_proxy_config(&self, entry: &ProxyEntry) -> Result Option { method get_all_bindings_snapshot (line 372) | pub fn get_all_bindings_snapshot(&self) -> std::collections::HashMap Result<(), String> { method check_proxy_health (line 450) | async fn check_proxy_health(&self, entry: &ProxyEntry) -> (bool, Optio... method start_health_check_loop (line 503) | pub fn start_health_check_loop(self: Arc) { FILE: src-tauri/src/proxy/rate_limit.rs type RateLimitReason (line 7) | pub enum RateLimitReason { type RateLimitInfo (line 23) | pub struct RateLimitInfo { constant FAILURE_COUNT_EXPIRY_SECONDS (line 42) | const FAILURE_COUNT_EXPIRY_SECONDS: u64 = 3600; type RateLimitTracker (line 45) | pub struct RateLimitTracker { method new (line 52) | pub fn new() -> Self { method get_limit_key (line 62) | fn get_limit_key(&self, account_id: &str, model: Option<&str>) -> Stri... method get_remaining_wait (line 71) | pub fn get_remaining_wait(&self, account_id: &str, model: Option<&str>... method mark_success (line 98) | pub fn mark_success(&self, account_id: &str) { method set_lockout_until (line 116) | pub fn set_lockout_until(&self, account_id: &str, reset_time: SystemTi... method set_lockout_until_iso (line 156) | pub fn set_lockout_until_iso(&self, account_id: &str, reset_time_str: ... method parse_from_error (line 182) | pub fn parse_from_error( method parse_rate_limit_reason (line 331) | fn parse_rate_limit_reason(&self, body: &str) -> RateLimitReason { method parse_duration_string (line 375) | fn parse_duration_string(&self, s: &str) -> Option { method parse_retry_time_from_body (line 421) | fn parse_retry_time_from_body(&self, body: &str) -> Option { method get (line 503) | pub fn get(&self, account_id: &str) -> Option { method is_rate_limited (line 509) | pub fn is_rate_limited(&self, account_id: &str, model: Option<&str>) -... method get_reset_seconds (line 515) | pub fn get_reset_seconds(&self, account_id: &str) -> Option { method cleanup_expired (line 528) | pub fn cleanup_expired(&self) -> usize { method clear (line 549) | pub fn clear(&self, account_id: &str) -> bool { method clear_all (line 557) | pub fn clear_all(&self) { method default (line 565) | fn default() -> Self { function test_parse_retry_time_minutes_seconds (line 575) | fn test_parse_retry_time_minutes_seconds() { function test_parse_google_json_delay (line 583) | fn test_parse_google_json_delay() { function test_parse_retry_after_ignore_case (line 601) | fn test_parse_retry_after_ignore_case() { function test_get_remaining_wait (line 609) | fn test_get_remaining_wait() { function test_safety_buffer (line 617) | fn test_safety_buffer() { function test_tpm_exhausted_is_rate_limit_exceeded (line 627) | fn test_tpm_exhausted_is_rate_limit_exceeded() { function test_server_error_does_not_accumulate_failure_count (line 637) | fn test_server_error_does_not_accumulate_failure_count() { function test_quota_exhausted_does_accumulate_failure_count (line 661) | fn test_quota_exhausted_does_accumulate_failure_count() { FILE: src-tauri/src/proxy/security.rs type ProxySecurityConfig (line 4) | pub struct ProxySecurityConfig { method from_proxy_config (line 14) | pub fn from_proxy_config(config: &ProxyConfig) -> Self { method effective_auth_mode (line 25) | pub fn effective_auth_mode(&self) -> ProxyAuthMode { function auto_mode_resolves_off_for_local_only (line 44) | fn auto_mode_resolves_off_for_local_only() { function auto_mode_resolves_all_except_health_for_lan (line 57) | fn auto_mode_resolves_all_except_health_for_lan() { FILE: src-tauri/src/proxy/server.rs function get_pending_reload_accounts (line 29) | fn get_pending_reload_accounts() -> &'static std::sync::RwLock &'static std::sync::RwLock Vec { function take_pending_delete_accounts (line 76) | pub fn take_pending_delete_accounts() -> Vec { type AppState (line 93) | pub struct AppState { function from_ref (line 122) | fn from_ref(state: &AppState) -> Self { type ErrorResponse (line 128) | struct ErrorResponse { type AccountResponse (line 133) | struct AccountResponse { type QuotaResponse (line 155) | struct QuotaResponse { type ModelQuota (line 163) | struct ModelQuota { type AccountListResponse (line 170) | struct AccountListResponse { function to_account_response (line 175) | fn to_account_response( type AxumServer (line 215) | pub struct AxumServer { method update_mapping (line 233) | pub async fn update_mapping(&self, config: &crate::proxy::config::Prox... method update_proxy (line 242) | pub async fn update_proxy(&self, new_config: crate::proxy::config::Ups... method update_proxy_pool (line 249) | pub async fn update_proxy_pool(&self, new_config: crate::proxy::config... method update_security (line 255) | pub async fn update_security(&self, config: &crate::proxy::config::Pro... method update_zai (line 261) | pub async fn update_zai(&self, config: &crate::proxy::config::ProxyCon... method update_experimental (line 267) | pub async fn update_experimental(&self, config: &crate::proxy::config:... method update_debug_logging (line 273) | pub async fn update_debug_logging(&self, config: &crate::proxy::config... method update_user_agent (line 279) | pub async fn update_user_agent(&self, config: &crate::proxy::config::P... method set_running (line 286) | pub async fn set_running(&self, running: bool) { method start (line 293) | pub async fn start( method stop (line 771) | pub fn stop(&self) { function health_check_handler (line 786) | async fn health_check_handler() -> Response { function silent_ok_handler (line 795) | async fn silent_ok_handler() -> Response { function admin_list_accounts (line 805) | async fn admin_list_accounts( type ExportAccountsRequest (line 867) | struct ExportAccountsRequest { function admin_export_accounts (line 871) | async fn admin_export_accounts( function admin_get_current_account (line 885) | async fn admin_get_current_account( type AddAccountRequest (line 942) | struct AddAccountRequest { function admin_add_account (line 946) | async fn admin_add_account( function admin_delete_account (line 978) | async fn admin_delete_account( type SwitchRequest (line 1005) | struct SwitchRequest { function admin_switch_account (line 1009) | async fn admin_switch_account( function admin_refresh_all_quotas (line 1065) | async fn admin_refresh_all_quotas() -> Result String { function admin_bind_device (line 1180) | async fn admin_bind_device( type LogsRequest (line 1201) | struct LogsRequest { function admin_get_logs (line 1213) | async fn admin_get_logs( function admin_get_config (line 1239) | async fn admin_get_config() -> Result) -> imp... function admin_stop_proxy_service (line 1427) | async fn admin_stop_proxy_service(State(state): State) -> impl... type UpdateMappingWrapper (line 1442) | struct UpdateMappingWrapper { function admin_update_model_mapping (line 1446) | async fn admin_update_model_mapping( function admin_generate_api_key (line 1480) | async fn admin_generate_api_key() -> impl IntoResponse { function admin_clear_proxy_session_bindings (line 1485) | async fn admin_clear_proxy_session_bindings(State(state): State) -> i... function admin_clear_rate_limit (line 1497) | async fn admin_clear_rate_limit( function admin_get_preferred_account (line 1510) | async fn admin_get_preferred_account(State(state): State) -> i... type SetPreferredAccountRequest (line 1517) | struct SetPreferredAccountRequest { function admin_set_preferred_account (line 1521) | async fn admin_set_preferred_account( function admin_fetch_zai_models (line 1532) | async fn admin_fetch_zai_models( function admin_set_proxy_monitor_enabled (line 1599) | async fn admin_set_proxy_monitor_enabled( function admin_get_proxy_logs_count_filtered (line 1617) | async fn admin_get_proxy_logs_count_filtered( function admin_clear_proxy_logs (line 1640) | async fn admin_clear_proxy_logs() -> impl IntoResponse { function admin_get_proxy_log_detail (line 1651) | async fn admin_get_proxy_log_detail( type LogsFilterQuery (line 1675) | struct LogsFilterQuery { function admin_get_proxy_logs_filtered (line 1686) | async fn admin_get_proxy_logs_filtered( function admin_get_proxy_stats (line 1714) | async fn admin_get_proxy_stats( function admin_get_data_dir_path (line 1721) | async fn admin_get_data_dir_path() -> impl IntoResponse { function admin_list_user_tokens (line 1730) | async fn admin_list_user_tokens() -> Result Result Result Result Result Result impl IntoResponse { function admin_get_update_settings (line 2121) | async fn admin_get_update_settings() -> impl IntoResponse { function admin_check_for_updates (line 2133) | async fn admin_check_for_updates() -> Result impl IntoResponse { function admin_toggle_auto_launch (line 2173) | async fn admin_toggle_auto_launch(Json(_payload): Json impl IntoResponse { type BulkDeleteRequest (line 2185) | struct BulkDeleteRequest { function admin_delete_accounts (line 2190) | async fn admin_delete_accounts( type ReorderRequest (line 2204) | struct ReorderRequest { function admin_reorder_accounts (line 2208) | async fn admin_reorder_accounts( function admin_fetch_account_quota (line 2230) | async fn admin_fetch_account_quota( type ToggleProxyRequest (line 2263) | struct ToggleProxyRequest { function admin_toggle_proxy_status (line 2268) | async fn admin_toggle_proxy_status( function admin_warm_up_all_accounts (line 2291) | async fn admin_warm_up_all_accounts() -> Result Self { function admin_bind_device_profile_with_profile (line 2535) | async fn admin_bind_device_profile_with_profile( function admin_restore_original_device (line 2559) | async fn admin_restore_original_device( function admin_restore_device_version (line 2570) | async fn admin_restore_device_version( function admin_delete_device_version (line 2583) | async fn admin_delete_device_version( function admin_open_folder (line 2596) | async fn admin_open_folder() -> Result, _proto: Option... type IpAccessLogQuery (line 3062) | struct IpAccessLogQuery { function default_page (line 3072) | fn default_page() -> usize { 1 } function default_page_size (line 3073) | fn default_page_size() -> usize { 50 } type IpAccessLogResponse (line 3076) | struct IpAccessLogResponse { function admin_get_ip_access_logs (line 3081) | async fn admin_get_ip_access_logs( function admin_clear_ip_access_logs (line 3097) | async fn admin_clear_ip_access_logs() -> Result Result Result Result Result Result impl IntoResponse { function admin_disable_debug_console (line 3314) | async fn admin_disable_debug_console() -> impl IntoResponse { function admin_is_debug_console_enabled (line 3319) | async fn admin_is_debug_console_enabled() -> impl IntoResponse { function admin_get_debug_console_logs (line 3323) | async fn admin_get_debug_console_logs() -> impl IntoResponse { function admin_clear_debug_console_logs (line 3328) | async fn admin_clear_debug_console_logs() -> impl IntoResponse { type OpencodeSyncStatusRequest (line 3335) | struct OpencodeSyncStatusRequest { function admin_get_opencode_sync_status (line 3339) | async fn admin_get_opencode_sync_status( type OpencodeSyncRequest (line 3355) | struct OpencodeSyncRequest { function admin_execute_opencode_sync (line 3363) | async fn admin_execute_opencode_sync( function admin_execute_opencode_restore (line 3382) | async fn admin_execute_opencode_restore( type GetOpencodeConfigRequest (line 3397) | struct GetOpencodeConfigRequest { function admin_get_opencode_config_content (line 3401) | async fn admin_get_opencode_config_content( type OpencodeClearRequest (line 3420) | struct OpencodeClearRequest { function admin_execute_opencode_clear (line 3425) | async fn admin_execute_opencode_clear( type DroidSyncStatusRequest (line 3441) | struct DroidSyncStatusRequest { function admin_get_droid_sync_status (line 3445) | async fn admin_get_droid_sync_status( type DroidSyncRequest (line 3459) | struct DroidSyncRequest { function admin_execute_droid_sync (line 3463) | async fn admin_execute_droid_sync( function admin_execute_droid_restore (line 3477) | async fn admin_execute_droid_restore( function admin_get_droid_config_content (line 3488) | async fn admin_get_droid_config_content( FILE: src-tauri/src/proxy/session_manager.rs type SessionManager (line 7) | pub struct SessionManager; method extract_session_id (line 20) | pub fn extract_session_id(request: &ClaudeRequest) -> String { method extract_openai_session_id (line 81) | pub fn extract_openai_session_id(request: &OpenAIRequest) -> String { method extract_gemini_session_id (line 123) | pub fn extract_gemini_session_id(request: &Value, _model_name: &str) -... FILE: src-tauri/src/proxy/signature_cache.rs constant SIGNATURE_TTL (line 6) | const SIGNATURE_TTL: Duration = Duration::from_secs(2 * 60 * 60); constant MIN_SIGNATURE_LENGTH (line 7) | const MIN_SIGNATURE_LENGTH: usize = 50; constant TOOL_CACHE_LIMIT (line 10) | const TOOL_CACHE_LIMIT: usize = 500; constant FAMILY_CACHE_LIMIT (line 11) | const FAMILY_CACHE_LIMIT: usize = 200; constant SESSION_CACHE_LIMIT (line 12) | const SESSION_CACHE_LIMIT: usize = 1000; type CacheEntry (line 16) | struct CacheEntry { type SessionSignatureEntry (line 23) | struct SessionSignatureEntry { function new (line 29) | fn new(data: T) -> Self { function is_expired (line 36) | fn is_expired(&self) -> bool { type SignatureCache (line 45) | pub struct SignatureCache { method new (line 64) | fn new() -> Self { method global (line 73) | pub fn global() -> &'static SignatureCache { method cache_tool_signature (line 79) | pub fn cache_tool_signature(&self, tool_use_id: &str, signature: Strin... method get_tool_signature (line 101) | pub fn get_tool_signature(&self, tool_use_id: &str) -> Option { method cache_thinking_family (line 114) | pub fn cache_thinking_family(&self, signature: String, family: String) { method get_signature_family (line 135) | pub fn get_signature_family(&self, signature: &str) -> Option { method cache_session_signature (line 157) | pub fn cache_session_signature(&self, session_id: &str, signature: Str... method get_session_signature (line 224) | pub fn get_session_signature(&self, session_id: &str) -> Option { method delete_session_signature (line 244) | pub fn delete_session_signature(&self, session_id: &str) { method clear (line 254) | pub fn clear(&self) { function test_tool_signature_cache (line 273) | fn test_tool_signature_cache() { function test_min_length (line 283) | fn test_min_length() { function test_thinking_family (line 290) | fn test_thinking_family() { function test_session_signature (line 299) | fn test_session_signature() { function test_clear_all_caches (line 333) | fn test_clear_all_caches() { FILE: src-tauri/src/proxy/sticky_config.rs type SchedulingMode (line 5) | pub enum SchedulingMode { method default (line 15) | fn default() -> Self { type StickySessionConfig (line 23) | pub struct StickySessionConfig { method default (line 31) | fn default() -> Self { FILE: src-tauri/src/proxy/tests/comprehensive.rs function test_first_thinking_request_permissive_mode (line 16) | fn test_first_thinking_request_permissive_mode() { function test_tool_loop_recovery (line 65) | fn test_tool_loop_recovery() { FILE: src-tauri/src/proxy/tests/quota_protection.rs function create_mock_token (line 18) | fn create_mock_token( function test_normalize_to_standard_id_claude_models (line 52) | fn test_normalize_to_standard_id_claude_models() { function test_protected_models_matching (line 95) | fn test_protected_models_matching() { function test_multi_account_quota_protection_filtering (line 142) | fn test_multi_account_quota_protection_filtering() { function test_all_accounts_protected_returns_error (line 217) | fn test_all_accounts_protected_returns_error() { function test_monitored_models_normalization_consistency (line 261) | fn test_monitored_models_normalization_consistency() { function test_quota_threshold_trigger_logic (line 306) | fn test_quota_threshold_trigger_logic() { function test_priority_fallback_when_protected (line 338) | fn test_priority_fallback_when_protected() { function test_model_level_protection_granularity (line 388) | fn test_model_level_protection_granularity() { function test_quota_protection_enabled_flag (line 420) | fn test_quota_protection_enabled_flag() { function test_full_quota_protection_flow (line 461) | fn test_full_quota_protection_flow() { function test_empty_protected_models (line 557) | fn test_empty_protected_models() { function test_model_name_case_sensitivity (line 579) | fn test_model_name_case_sensitivity() { function test_sticky_session_quota_protection_mid_session_single_account (line 601) | fn test_sticky_session_quota_protection_mid_session_single_account() { function test_sticky_session_quota_protection_mid_session_multi_account (line 684) | fn test_sticky_session_quota_protection_mid_session_multi_account() { function test_quota_protection_sync_after_refresh (line 753) | fn test_quota_protection_sync_after_refresh() { function test_quota_protection_dynamic_changes (line 820) | fn test_quota_protection_dynamic_changes() { function test_error_messages_for_quota_protection (line 883) | fn test_error_messages_for_quota_protection() { function test_get_model_quota_from_json_reads_correct_model (line 930) | fn test_get_model_quota_from_json_reads_correct_model() { function test_sorting_uses_target_model_quota_not_max (line 986) | fn test_sorting_uses_target_model_quota_not_max() { function test_quota_matching_with_normalized_model_name (line 1082) | fn test_quota_matching_with_normalized_model_name() { function create_mock_token_with_path (line 1122) | fn create_mock_token_with_path( FILE: src-tauri/src/proxy/tests/rate_limit_404_tests.rs function test_parse_from_error_404_short_lockout (line 9) | fn test_parse_from_error_404_short_lockout() { function test_404_does_not_accumulate_failure_count (line 21) | fn test_404_does_not_accumulate_failure_count() { function test_404_vs_5xx_lockout_duration (line 41) | fn test_404_vs_5xx_lockout_duration() { FILE: src-tauri/src/proxy/tests/retry_strategy_tests.rs function test_retry_strategy_404 (line 10) | fn test_retry_strategy_404() { function test_retry_strategy_429_no_delay (line 19) | fn test_retry_strategy_429_no_delay() { function test_retry_strategy_503 (line 29) | fn test_retry_strategy_503() { function test_retry_strategy_529 (line 39) | fn test_retry_strategy_529() { function test_retry_strategy_500 (line 49) | fn test_retry_strategy_500() { function test_retry_strategy_401_403 (line 59) | fn test_retry_strategy_401_403() { function test_retry_strategy_other (line 70) | fn test_retry_strategy_other() { function test_retry_strategy_400_thinking_signature (line 83) | fn test_retry_strategy_400_thinking_signature() { function test_retry_strategy_400_no_signature (line 103) | fn test_retry_strategy_400_no_signature() { function test_rotate_account_true_cases (line 115) | fn test_rotate_account_true_cases() { function test_rotate_account_false_cases (line 126) | fn test_rotate_account_false_cases() { FILE: src-tauri/src/proxy/tests/security_integration_tests.rs function cleanup_test_data (line 15) | fn cleanup_test_data() { function test_scenario_blacklist_blocks_request (line 39) | fn test_scenario_blacklist_blocks_request() { function test_scenario_whitelist_priority (line 76) | fn test_scenario_whitelist_priority() { function test_scenario_temporary_ban_expiration (line 116) | fn test_scenario_temporary_ban_expiration() { function test_scenario_cidr_subnet_blocking (line 152) | fn test_scenario_cidr_subnet_blocking() { function test_scenario_ban_message_details (line 194) | fn test_scenario_ban_message_details() { function test_scenario_blocked_request_logging (line 236) | fn test_scenario_blocked_request_logging() { function test_scenario_performance_impact (line 280) | fn test_scenario_performance_impact() { function test_scenario_data_persistence (line 328) | fn test_scenario_data_persistence() { function cleanup_test_data (line 362) | fn cleanup_test_data() { function stress_test_large_blacklist (line 373) | fn stress_test_large_blacklist() { function stress_test_access_logging (line 406) | fn stress_test_access_logging() { function stress_test_concurrent_operations (line 449) | fn stress_test_concurrent_operations() { FILE: src-tauri/src/proxy/tests/security_ip_tests.rs function now_timestamp (line 24) | fn now_timestamp() -> i64 { function cleanup_test_data (line 32) | fn cleanup_test_data() { function test_db_initialization (line 54) | fn test_db_initialization() { function test_db_multiple_initializations (line 61) | fn test_db_multiple_initializations() { function test_blacklist_add_and_check (line 74) | fn test_blacklist_add_and_check() { function test_blacklist_remove (line 96) | fn test_blacklist_remove() { function test_blacklist_get_entry_details (line 117) | fn test_blacklist_get_entry_details() { function test_cidr_matching_basic (line 150) | fn test_cidr_matching_basic() { function test_cidr_matching_various_masks (line 170) | fn test_cidr_matching_various_masks() { function test_cidr_edge_cases (line 193) | fn test_cidr_edge_cases() { function test_blacklist_expiration (line 219) | fn test_blacklist_expiration() { function test_blacklist_not_yet_expired (line 241) | fn test_blacklist_not_yet_expired() { function test_permanent_blacklist (line 260) | fn test_permanent_blacklist() { function test_whitelist_add_and_check (line 283) | fn test_whitelist_add_and_check() { function test_whitelist_cidr (line 299) | fn test_whitelist_cidr() { function test_access_log_save_and_retrieve (line 321) | fn test_access_log_save_and_retrieve() { function test_access_log_blocked_filter (line 356) | fn test_access_log_blocked_filter() { function test_ip_stats (line 408) | fn test_ip_stats() { function test_cleanup_old_logs (line 455) | fn test_cleanup_old_logs() { function test_concurrent_access (line 514) | fn test_concurrent_access() { function test_duplicate_blacklist_entry (line 546) | fn test_duplicate_blacklist_entry() { function test_empty_ip_pattern (line 562) | fn test_empty_ip_pattern() { function test_special_characters_in_reason (line 576) | fn test_special_characters_in_reason() { function test_hit_count_increment (line 592) | fn test_hit_count_increment() { function test_ip_extraction_priority (line 625) | fn test_ip_extraction_priority() { function benchmark_blacklist_lookup (line 657) | fn benchmark_blacklist_lookup() { function benchmark_cidr_matching (line 702) | fn benchmark_cidr_matching() { FILE: src-tauri/src/proxy/tests/ultra_priority_tests.rs function create_test_token (line 25) | fn create_test_token( constant ULTRA_REQUIRED_MODELS (line 62) | const ULTRA_REQUIRED_MODELS: &[&str] = &[ function is_ultra_required_model (line 69) | fn is_ultra_required_model(model: &str) -> bool { function test_is_ultra_required_model (line 76) | fn test_is_ultra_required_model() { function compare_tokens_for_model (line 95) | fn compare_tokens_for_model(a: &ProxyToken, b: &ProxyToken, _target_mode... function filter_tokens_by_capability (line 131) | fn filter_tokens_by_capability(tokens: Vec, target_model: &s... function test_ultra_priority_for_high_end_models (line 139) | fn test_ultra_priority_for_high_end_models() { function test_capability_filtering (line 162) | fn test_capability_filtering() { function test_ultra_accounts_sorted_by_quota (line 188) | fn test_ultra_accounts_sorted_by_quota() { function test_full_sorting_mixed_accounts (line 202) | fn test_full_sorting_mixed_accounts() { FILE: src-tauri/src/proxy/token_manager.rs type OnDiskAccountState (line 13) | enum OnDiskAccountState { type ProxyToken (line 20) | pub struct ProxyToken { type TokenManager (line 41) | pub struct TokenManager { method new (line 59) | pub fn new(data_dir: PathBuf) -> Self { method start_auto_cleanup (line 79) | pub async fn start_auto_cleanup(&self) { method load_accounts (line 116) | pub async fn load_accounts(&self) -> Result { method reload_account (line 164) | pub async fn reload_account(&self, account_id: &str) -> Result<(), Str... method reload_all_accounts (line 192) | pub async fn reload_all_accounts(&self) -> Result { method remove_account (line 200) | pub fn remove_account(&self, account_id: &str) { method get_token_by_id (line 217) | pub fn get_token_by_id(&self, account_id: &str) -> Option { method get_account_state_on_disk (line 229) | async fn get_account_state_on_disk(account_path: &std::path::PathBuf) ... method load_single_account (line 295) | async fn load_single_account(&self, path: &PathBuf) -> Result Option Option Option( method graceful_shutdown (line 1019) | pub async fn graceful_shutdown(&self, timeout: std::time::Duration) { method abort_background_tasks (line 1034) | pub async fn abort_background_tasks(&self) { method abort_task (line 1043) | async fn abort_task( method get_token (line 1064) | pub async fn get_token( method get_token_internal (line 1110) | async fn get_token_internal( method disable_account (line 1739) | async fn disable_account(&self, account_id: &str, reason: &str) -> Res... method save_project_id (line 1769) | async fn save_project_id(&self, account_id: &str, project_id: &str) ->... method save_refreshed_token (line 1789) | async fn save_refreshed_token(&self, account_id: &str, token_response:... method len (line 1812) | pub fn len(&self) -> usize { method get_token_by_email (line 1818) | pub async fn get_token_by_email( method mark_rate_limited (line 1904) | pub async fn mark_rate_limited( method is_rate_limited (line 1931) | pub async fn is_rate_limited(&self, account_id: &str, model: Option<&s... method is_rate_limited_sync (line 1941) | pub fn is_rate_limited_sync(&self, account_id: &str, model: Option<&st... method get_rate_limit_reset_seconds (line 1952) | pub fn get_rate_limit_reset_seconds(&self, account_id: &str) -> Option... method clean_expired_rate_limits (line 1958) | pub fn clean_expired_rate_limits(&self) { method email_to_account_id (line 1964) | fn email_to_account_id(&self, email: &str) -> Option { method clear_rate_limit (line 1972) | pub fn clear_rate_limit(&self, account_id: &str) -> bool { method clear_all_rate_limits (line 1977) | pub fn clear_all_rate_limits(&self) { method mark_account_success (line 1985) | pub fn mark_account_success(&self, account_id: &str) { method has_available_account (line 2009) | pub async fn has_available_account(&self, _quota_group: &str, target_m... method get_quota_reset_time (line 2061) | pub fn get_quota_reset_time(&self, account_id: &str) -> Option { method set_precise_lockout (line 2090) | pub fn set_precise_lockout(&self, account_id: &str, reason: crate::pro... method fetch_and_lock_with_realtime_quota (line 2113) | pub async fn fetch_and_lock_with_realtime_quota( method mark_rate_limited_async (line 2199) | pub async fn mark_rate_limited_async( method get_sticky_config (line 2301) | pub async fn get_sticky_config(&self) -> StickySessionConfig { method update_sticky_config (line 2306) | pub async fn update_sticky_config(&self, new_config: StickySessionConf... method update_circuit_breaker_config (line 2313) | pub async fn update_circuit_breaker_config(&self, config: crate::model... method get_circuit_breaker_config (line 2320) | pub async fn get_circuit_breaker_config(&self) -> crate::models::Circu... method clear_session_binding (line 2326) | pub fn clear_session_binding(&self, session_id: &str) { method clear_all_sessions (line 2331) | pub fn clear_all_sessions(&self) { method set_preferred_account (line 2339) | pub async fn set_preferred_account(&self, account_id: Option) { method get_preferred_account (line 2350) | pub async fn get_preferred_account(&self) -> Option { method exchange_code (line 2355) | pub async fn exchange_code(&self, code: &str, redirect_uri: &str) -> R... method get_oauth_url_with_redirect (line 2365) | pub fn get_oauth_url_with_redirect(&self, redirect_uri: &str, state: &... method get_user_info (line 2370) | pub async fn get_user_info( method add_account (line 2383) | pub async fn add_account(&self, email: &str, refresh_token: &str) -> R... method record_success (line 2419) | pub fn record_success(&self, account_id: &str) { method record_failure (line 2428) | pub fn record_failure(&self, account_id: &str) { method extract_earliest_reset_time (line 2440) | fn extract_earliest_reset_time(&self, account: &serde_json::Value) -> ... method get_all_collected_models (line 2490) | pub fn get_all_collected_models(&self) -> std::collections::HashSet Option { method set_validation_block (line 2523) | pub async fn set_validation_block(&self, account_id: &str, block_until... method set_validation_block_public (line 2603) | pub async fn set_validation_block_public(&self, account_id: &str, bloc... method set_forbidden (line 2608) | pub async fn set_forbidden(&self, account_id: &str, reason: &str) -> R... function truncate_reason (line 2629) | fn truncate_reason(reason: &str, max_len: usize) -> String { function test_reload_account_purges_cache_when_account_becomes_proxy_disabled (line 2650) | async fn test_reload_account_purges_cache_when_account_becomes_proxy_dis... function test_fixed_account_mode_skips_preferred_when_disabled_on_disk_without_reload (line 2709) | async fn test_fixed_account_mode_skips_preferred_when_disabled_on_disk_w... function test_sticky_session_skips_bound_account_when_disabled_on_disk_without_reload (line 2768) | async fn test_sticky_session_skips_bound_account_when_disabled_on_disk_w... function create_test_token (line 2843) | fn create_test_token( function compare_tokens (line 2873) | fn compare_tokens(a: &ProxyToken, b: &ProxyToken) -> Ordering { function test_sorting_tier_priority (line 2915) | fn test_sorting_tier_priority() { function test_sorting_health_score_priority (line 2928) | fn test_sorting_health_score_priority() { function test_sorting_reset_time_priority (line 2938) | fn test_sorting_reset_time_priority() { function test_sorting_reset_time_threshold (line 2950) | fn test_sorting_reset_time_threshold() { function test_sorting_reset_time_beyond_threshold (line 2962) | fn test_sorting_reset_time_beyond_threshold() { function test_sorting_quota_fallback (line 2974) | fn test_sorting_quota_fallback() { function test_sorting_missing_reset_time (line 2984) | fn test_sorting_missing_reset_time() { function test_full_sorting_integration (line 2995) | fn test_full_sorting_integration() { function test_realistic_scenario (line 3022) | fn test_realistic_scenario() { function test_extract_earliest_reset_time (line 3043) | fn test_extract_earliest_reset_time() { function test_extract_reset_time_no_claude (line 3067) | fn test_extract_reset_time_no_claude() { function test_extract_reset_time_missing_quota (line 3089) | fn test_extract_reset_time_missing_quota() { function create_test_token_with_protected (line 3103) | fn create_test_token_with_protected( function test_p2c_selects_higher_quota (line 3131) | fn test_p2c_selects_higher_quota() { function test_p2c_skips_attempted (line 3152) | fn test_p2c_skips_attempted() { function test_p2c_skips_protected_models (line 3169) | fn test_p2c_skips_protected_models() { function test_p2c_single_candidate (line 3188) | fn test_p2c_single_candidate() { function test_p2c_empty_candidates (line 3202) | fn test_p2c_empty_candidates() { function test_p2c_all_attempted (line 3214) | fn test_p2c_all_attempted() { function test_is_ultra_required_model (line 3234) | fn test_is_ultra_required_model() { function test_ultra_priority_for_high_end_models (line 3266) | fn test_ultra_priority_for_high_end_models() { function test_ultra_accounts_sorted_by_quota (line 3356) | fn test_ultra_accounts_sorted_by_quota() { function test_full_sorting_mixed_accounts (line 3398) | fn test_full_sorting_mixed_accounts() { FILE: src-tauri/src/proxy/upstream/client.rs type FallbackAttemptLog (line 13) | pub struct FallbackAttemptLog { type UpstreamCallResult (line 23) | pub struct UpstreamCallResult { function mask_email (line 32) | pub fn mask_email(email: &str) -> String { constant V1_INTERNAL_BASE_URL_PROD (line 48) | const V1_INTERNAL_BASE_URL_PROD: &str = "https://cloudcode-pa.googleapis... constant V1_INTERNAL_BASE_URL_DAILY (line 49) | const V1_INTERNAL_BASE_URL_DAILY: &str = "https://daily-cloudcode-pa.goo... constant V1_INTERNAL_BASE_URL_SANDBOX (line 50) | const V1_INTERNAL_BASE_URL_SANDBOX: &str = constant V1_INTERNAL_BASE_URL_FALLBACKS (line 53) | const V1_INTERNAL_BASE_URL_FALLBACKS: [&str; 3] = [ type UpstreamClient (line 59) | pub struct UpstreamClient { method new (line 67) | pub fn new( method build_client_internal (line 100) | fn build_client_internal( method build_client_with_proxy (line 128) | fn build_client_with_proxy( method apply_default_user_agent (line 145) | fn apply_default_user_agent(builder: rquest::ClientBuilder) -> rquest:... method set_user_agent_override (line 159) | pub async fn set_user_agent_override(&self, ua: Option) { method get_user_agent (line 166) | pub async fn get_user_agent(&self) -> String { method get_client (line 175) | pub async fn get_client(&self, account_id: Option<&str>) -> Client { method build_url (line 220) | fn build_url(base_url: &str, method: &str, query_string: Option<&str>)... method should_try_next_endpoint (line 229) | fn should_try_next_endpoint(status: StatusCode) -> bool { method call_v1_internal (line 240) | pub async fn call_v1_internal( method call_v1_internal_with_headers (line 261) | pub async fn call_v1_internal_with_headers( method fetch_available_models (line 442) | pub async fn fetch_available_models( function test_build_url (line 471) | fn test_build_url() { FILE: src-tauri/src/proxy/upstream/models.rs type UpstreamModels (line 3) | pub struct UpstreamModels { FILE: src-tauri/src/proxy/upstream/retry.rs function parse_duration_ms (line 12) | pub fn parse_duration_ms(duration_str: &str) -> Option { function parse_retry_delay (line 38) | pub fn parse_retry_delay(error_text: &str) -> Option { function test_parse_duration_ms (line 74) | fn test_parse_duration_ms() { function test_parse_retry_delay (line 82) | fn test_parse_retry_delay() { FILE: src-tauri/src/proxy/zai_vision_mcp.rs type ZaiVisionMcpState (line 6) | pub struct ZaiVisionMcpState { method new (line 17) | pub fn new() -> Self { method create_session (line 21) | pub async fn create_session(&self) -> String { method has_session (line 33) | pub async fn has_session(&self, session_id: &str) -> bool { method remove_session (line 38) | pub async fn remove_session(&self, session_id: &str) { type ZaiVisionSession (line 11) | struct ZaiVisionSession { FILE: src-tauri/src/proxy/zai_vision_tools.rs constant ZAI_PAAZ_CHAT_COMPLETIONS_URL (line 8) | const ZAI_PAAZ_CHAT_COMPLETIONS_URL: &str = "https://api.z.ai/api/paas/v... function build_client (line 10) | fn build_client(upstream_proxy: UpstreamProxyConfig, timeout_secs: u64) ... function is_http_url (line 24) | fn is_http_url(value: &str) -> bool { function mime_for_image_extension (line 29) | fn mime_for_image_extension(ext: &str) -> Option<&'static str> { function mime_for_video_extension (line 37) | fn mime_for_video_extension(ext: &str) -> Option<&'static str> { function file_ext (line 46) | fn file_ext(path: &std::path::Path) -> Option { function encode_file_as_data_url (line 52) | fn encode_file_as_data_url(path: &std::path::Path, mime: &str) -> Result... function image_source_to_content (line 58) | fn image_source_to_content(image_source: &str, max_size_mb: u64) -> Resu... function video_source_to_content (line 86) | fn video_source_to_content(video_source: &str, max_size_mb: u64) -> Resu... function user_message_with_content (line 114) | fn user_message_with_content(mut content: Vec, prompt: &str) -> V... function vision_chat_completion (line 119) | async fn vision_chat_completion( function tool_specs (line 167) | pub fn tool_specs() -> Vec { function call_tool (line 274) | pub async fn call_tool( FILE: src-tauri/src/utils/command.rs constant CREATE_NO_WINDOW (line 7) | const CREATE_NO_WINDOW: u32 = 0x08000000; type CommandExtWrapper (line 9) | pub trait CommandExtWrapper { method creation_flags_windows (line 11) | fn creation_flags_windows(&mut self) -> &mut Self; method creation_flags_windows (line 15) | fn creation_flags_windows(&mut self) -> &mut Self { method creation_flags_windows (line 24) | fn creation_flags_windows(&mut self) -> &mut Self { FILE: src-tauri/src/utils/crypto.rs constant FIXED_NONCE (line 9) | const FIXED_NONCE: &[u8; 12] = b"antigravsalt"; constant ENCRYPTED_PREFIX (line 10) | const ENCRYPTED_PREFIX: &str = "ag_enc_"; function get_encryption_key (line 13) | fn get_encryption_key() -> [u8; 32] { function serialize_password (line 22) | pub fn serialize_password(password: &str, serializer: S) -> Result(deserializer: D) -> Result Result { function decrypt_string_internal (line 90) | fn decrypt_string_internal(encrypted_base64: &str) -> Result Result { function test_encrypt_decrypt_cycle (line 119) | fn test_encrypt_decrypt_cycle() { function test_legacy_compatibility (line 131) | fn test_legacy_compatibility() { FILE: src-tauri/src/utils/http.rs function create_base_client (line 20) | fn create_base_client(timeout_secs: u64) -> Client { function get_client (line 48) | pub fn get_client() -> Client { function get_long_client (line 53) | pub fn get_long_client() -> Client { function create_standard_client (line 58) | fn create_standard_client(timeout_secs: u64) -> Client { function get_standard_client (line 86) | pub fn get_standard_client() -> Client { function get_long_standard_client (line 91) | pub fn get_long_standard_client() -> Client { FILE: src-tauri/src/utils/protobuf.rs function encode_varint (line 2) | pub fn encode_varint(mut value: u64) -> Vec { function read_varint (line 13) | pub fn read_varint(data: &[u8], offset: usize) -> Result<(u64, usize), S... function skip_field (line 35) | pub fn skip_field(data: &[u8], offset: usize, wire_type: u8) -> Result Result, Stri... function find_field (line 85) | pub fn find_field(data: &[u8], target_field: u32) -> Result Vec { function encode_len_delim_field (line 187) | pub fn encode_len_delim_field(field_num: u32, data: &[u8]) -> Vec { function encode_string_field (line 196) | pub fn encode_string_field(field_num: u32, value: &str) -> Vec { function create_oauth_info (line 201) | pub fn create_oauth_info(access_token: &str, refresh_token: &str, expiry... FILE: src/App.tsx function App (line 65) | function App() { FILE: src/components/UpdateNotification.tsx type UpdateInfo (line 10) | interface UpdateInfo { type UpdateState (line 18) | type UpdateState = 'checking' | 'downloading' | 'ready' | 'error' | 'none'; type UpdateNotificationProps (line 20) | interface UpdateNotificationProps { FILE: src/components/accounts/AccountCard.tsx type AccountCardProps (line 10) | interface AccountCardProps { constant DEFAULT_MODELS (line 30) | const DEFAULT_MODELS = Object.entries(MODEL_CONFIG).map(([id, config]) =... function AccountCard (line 37) | function AccountCard({ account, selected, onSelect, isCurrent: propIsCur... FILE: src/components/accounts/AccountDetailsDialog.tsx type AccountDetailsDialogProps (line 8) | interface AccountDetailsDialogProps { function AccountDetailsDialog (line 13) | function AccountDetailsDialog({ account, onClose }: AccountDetailsDialog... FILE: src/components/accounts/AccountErrorDialog.tsx type AccountErrorDialogProps (line 9) | interface AccountErrorDialogProps { function AccountErrorDialog (line 14) | function AccountErrorDialog({ account, onClose }: AccountErrorDialogProp... FILE: src/components/accounts/AccountGrid.tsx type AccountGridProps (line 5) | interface AccountGridProps { function AccountGrid (line 25) | function AccountGrid({ accounts, selectedIds, refreshingIds, onToggleSel... FILE: src/components/accounts/AccountRow.tsx type AccountRowProps (line 7) | interface AccountRowProps { function AccountRow (line 25) | function AccountRow({ account, selected, onSelect, isCurrent, isRefreshi... FILE: src/components/accounts/AccountTable.tsx type AccountTableProps (line 59) | interface AccountTableProps { type SortableRowProps (line 81) | interface SortableRowProps { type AccountRowContentProps (line 101) | interface AccountRowContentProps { constant MODEL_GROUPS (line 129) | const MODEL_GROUPS = { constant MODEL_ID_ALIASES (line 147) | const MODEL_ID_ALIASES: Record = { function getModelAliases (line 156) | function getModelAliases(modelId: string): string[] { function isModelProtected (line 160) | function isModelProtected(protectedModels: string[] | undefined, modelNa... function SortableAccountRow (line 201) | function SortableAccountRow({ function AccountRowContent (line 294) | function AccountRowContent({ function AccountTable (line 684) | function AccountTable({ FILE: src/components/accounts/AddAccountDialog.tsx type AddAccountDialogProps (line 12) | interface AddAccountDialogProps { type Status (line 17) | type Status = 'idle' | 'loading' | 'success' | 'error'; function AddAccountDialog (line 19) | function AddAccountDialog({ onAdd, showText = true }: AddAccountDialogPr... FILE: src/components/accounts/DeviceFingerprintDialog.tsx type DeviceFingerprintDialogProps (line 9) | interface DeviceFingerprintDialogProps { function DeviceFingerprintDialog (line 14) | function DeviceFingerprintDialog({ account, onClose }: DeviceFingerprint... type HistoryRowProps (line 261) | interface HistoryRowProps { function HistoryRow (line 272) | function HistoryRow({ id, label, createdAt, profile, onRestore, onDelete... function ConfirmDialog (line 299) | function ConfirmDialog({ profile, type, onConfirm, onCancel, loading }: ... FILE: src/components/accounts/QuotaItem.tsx type QuotaItemProps (line 7) | interface QuotaItemProps { function QuotaItem (line 16) | function QuotaItem({ label, percentage, resetTime, isProtected, classNam... FILE: src/components/common/BackgroundTaskRunner.tsx function BackgroundTaskRunner (line 5) | function BackgroundTaskRunner() { FILE: src/components/common/DebouncedSlider.tsx type DebouncedSliderProps (line 3) | interface DebouncedSliderProps { function DebouncedSlider (line 12) | function DebouncedSlider({ value, onChange, min, max, step, className }:... FILE: src/components/common/GroupedSelect.tsx type SelectOption (line 6) | interface SelectOption { type GroupedSelectProps (line 12) | interface GroupedSelectProps { function GroupedSelect (line 22) | function GroupedSelect({ FILE: src/components/common/HelpTooltip.tsx type HelpTooltipPlacement (line 3) | type HelpTooltipPlacement = 'top' | 'right' | 'bottom' | 'left'; type HelpTooltipProps (line 5) | type HelpTooltipProps = { function HelpTooltip (line 20) | function HelpTooltip({ FILE: src/components/common/ModalDialog.tsx type ModalType (line 5) | type ModalType = 'confirm' | 'success' | 'error' | 'info'; type ModalDialogProps (line 7) | interface ModalDialogProps { function ModalDialog (line 20) | function ModalDialog({ FILE: src/components/common/Pagination.tsx type PaginationProps (line 4) | interface PaginationProps { function Pagination (line 14) | function Pagination({ FILE: src/components/common/ThemeManager.tsx function ThemeManager (line 8) | function ThemeManager() { FILE: src/components/common/Toast.tsx type ToastType (line 4) | type ToastType = 'success' | 'error' | 'info' | 'warning'; type ToastProps (line 6) | interface ToastProps { FILE: src/components/common/ToastContainer.tsx type ToastItem (line 5) | interface ToastItem { FILE: src/components/dashboard/BestAccounts.tsx type BestAccountsProps (line 4) | interface BestAccountsProps { function BestAccounts (line 12) | function BestAccounts({ accounts, currentAccountId, onSwitch }: BestAcco... FILE: src/components/dashboard/CurrentAccount.tsx type CurrentAccountProps (line 5) | interface CurrentAccountProps { function CurrentAccount (line 12) | function CurrentAccount({ account, onSwitch }: CurrentAccountProps) { FILE: src/components/dashboard/StatsCard.tsx type StatsCardProps (line 3) | interface StatsCardProps { function StatsCard (line 11) | function StatsCard({ icon: Icon, title, value, description, colorClass =... FILE: src/components/debug/DebugConsole.tsx constant LEVEL_CONFIG (line 8) | const LEVEL_CONFIG: Record = { constant MODEL_SORT_WEIGHTS (line 196) | const MODEL_SORT_WEIGHTS = { function getModelSortWeight (line 224) | function getModelSortWeight(modelId: string): number { function sortModels (line 271) | function sortModels(models: T[]): T[] { FILE: src/pages/Accounts.tsx type FilterType (line 34) | type FilterType = "all" | "pro" | "ultra" | "free"; type ViewMode (line 35) | type ViewMode = "list" | "grid"; function Accounts (line 38) | function Accounts() { FILE: src/pages/ApiProxy.tsx type ProxyStatus (line 41) | interface ProxyStatus { type CustomPreset (line 48) | interface CustomPreset { type CollapsibleCardProps (line 56) | interface CollapsibleCardProps { function CollapsibleCard (line 67) | function CollapsibleCard({ function ApiProxy (line 147) | function ApiProxy() { FILE: src/pages/Dashboard.tsx function Dashboard (line 16) | function Dashboard() { FILE: src/pages/Settings.tsx function Settings (line 22) | function Settings() { FILE: src/pages/TokenStats.tsx type TokenStatsAggregated (line 7) | interface TokenStatsAggregated { type AccountTokenStats (line 15) | interface AccountTokenStats { type ModelTokenStats (line 23) | interface ModelTokenStats { type ModelTrendPoint (line 31) | interface ModelTrendPoint { type AccountTrendPoint (line 36) | interface AccountTrendPoint { type TokenStatsSummary (line 41) | interface TokenStatsSummary { type TimeRange (line 49) | type TimeRange = 'hourly' | 'daily' | 'weekly'; type ViewMode (line 50) | type ViewMode = 'model' | 'account'; constant MODEL_COLORS (line 52) | const MODEL_COLORS = [ constant COLORS (line 58) | const COLORS = ['#3b82f6', '#8b5cf6', '#ec4899', '#f59e0b', '#10b981', '... FILE: src/pages/UserToken.tsx type UserToken (line 9) | interface UserToken { type UserTokenStats (line 27) | interface UserTokenStats { FILE: src/services/accountService.ts function ensureTauriEnvironment (line 6) | function ensureTauriEnvironment() { function listAccounts (line 13) | async function listAccounts(): Promise { function getCurrentAccount (line 23) | async function getCurrentAccount(): Promise { function addAccount (line 27) | async function addAccount(email: string, refreshToken: string): Promise<... function deleteAccount (line 31) | async function deleteAccount(accountId: string): Promise { function deleteAccounts (line 35) | async function deleteAccounts(accountIds: string[]): Promise { function switchAccount (line 39) | async function switchAccount(accountId: string): Promise { function fetchAccountQuota (line 43) | async function fetchAccountQuota(accountId: string): Promise { type RefreshStats (line 47) | interface RefreshStats { function refreshAllQuotas (line 54) | async function refreshAllQuotas(): Promise { function startOAuthLogin (line 59) | async function startOAuthLogin(): Promise { function completeOAuthLogin (line 78) | async function completeOAuthLogin(): Promise { function cancelOAuthLogin (line 93) | async function cancelOAuthLogin(): Promise { function importV1Accounts (line 99) | async function importV1Accounts(): Promise { function importFromDb (line 103) | async function importFromDb(): Promise { function importFromCustomDb (line 107) | async function importFromCustomDb(path: string): Promise { function syncAccountFromDb (line 111) | async function syncAccountFromDb(): Promise { function toggleProxyStatus (line 115) | async function toggleProxyStatus(accountId: string, enable: boolean, rea... function reorderAccounts (line 123) | async function reorderAccounts(accountIds: string[]): Promise { type DeviceProfilesResponse (line 128) | interface DeviceProfilesResponse { function getDeviceProfiles (line 134) | async function getDeviceProfiles(accountId: string): Promise { function listDeviceVersions (line 146) | async function listDeviceVersions(accountId: string): Promise { function previewGenerateProfile (line 162) | async function previewGenerateProfile(): Promise { function bindDeviceProfileWithProfile (line 166) | async function bindDeviceProfileWithProfile(accountId: string, profile: ... function warmUpAllAccounts (line 171) | async function warmUpAllAccounts(): Promise { function warmUpAccount (line 175) | async function warmUpAccount(accountId: string): Promise { type ExportAccountItem (line 180) | interface ExportAccountItem { type ExportAccountsResponse (line 185) | interface ExportAccountsResponse { function exportAccounts (line 189) | async function exportAccounts(accountIds: string[]): Promise { function saveConfig (line 8) | async function saveConfig(config: AppConfig): Promise { FILE: src/stores/networkMonitorStore.ts type NetworkRequest (line 3) | interface NetworkRequest { type NetworkMonitorState (line 15) | interface NetworkMonitorState { FILE: src/stores/useAccountStore.ts type AccountState (line 5) | interface AccountState { FILE: src/stores/useConfigStore.ts type ConfigState (line 5) | interface ConfigState { FILE: src/stores/useDebugConsole.ts type LogEntry (line 7) | interface LogEntry { type LogLevel (line 16) | type LogLevel = 'ERROR' | 'WARN' | 'INFO' | 'DEBUG' | 'TRACE'; type DebugConsoleState (line 18) | interface DebugConsoleState { constant MAX_LOGS (line 47) | const MAX_LOGS = 5000; FILE: src/stores/useViewStore.ts type ViewState (line 3) | interface ViewState { FILE: src/types/account.ts type Account (line 1) | interface Account { type TokenData (line 25) | interface TokenData { type QuotaData (line 34) | interface QuotaData { type ModelQuota (line 43) | interface ModelQuota { type DeviceProfile (line 57) | interface DeviceProfile { type DeviceProfileVersion (line 64) | interface DeviceProfileVersion { FILE: src/types/config.ts type UpstreamProxyConfig (line 1) | interface UpstreamProxyConfig { type ProxyConfig (line 6) | interface ProxyConfig { type ThinkingBudgetMode (line 35) | type ThinkingBudgetMode = 'auto' | 'passthrough' | 'custom' | 'adaptive'; type ThinkingEffort (line 38) | type ThinkingEffort = 'low' | 'medium' | 'high'; type ThinkingBudgetConfig (line 41) | interface ThinkingBudgetConfig { type GlobalSystemPromptConfig (line 55) | interface GlobalSystemPromptConfig { type DebugLoggingConfig (line 62) | interface DebugLoggingConfig { type SchedulingMode (line 67) | type SchedulingMode = 'CacheFirst' | 'Balance' | 'PerformanceFirst'; type StickySessionConfig (line 69) | interface StickySessionConfig { type ZaiDispatchMode (line 74) | type ZaiDispatchMode = 'off' | 'exclusive' | 'pooled' | 'fallback'; type ZaiMcpConfig (line 76) | interface ZaiMcpConfig { type ZaiModelDefaults (line 83) | interface ZaiModelDefaults { type ZaiConfig (line 89) | interface ZaiConfig { type ScheduledWarmupConfig (line 99) | interface ScheduledWarmupConfig { type QuotaProtectionConfig (line 104) | interface QuotaProtectionConfig { type PinnedQuotaModelsConfig (line 110) | interface PinnedQuotaModelsConfig { type ExperimentalConfig (line 114) | interface ExperimentalConfig { type CircuitBreakerConfig (line 121) | interface CircuitBreakerConfig { type AppConfig (line 126) | interface AppConfig { type TunnelMode (line 153) | type TunnelMode = 'quick' | 'auth'; type CloudflaredConfig (line 155) | interface CloudflaredConfig { type CloudflaredStatus (line 163) | interface CloudflaredStatus { type ProxyAuth (line 175) | interface ProxyAuth { type ProxyEntry (line 180) | interface ProxyEntry { type ProxySelectionStrategy (line 197) | type ProxySelectionStrategy = 'round_robin' | 'random' | 'priority' | 'l... type ProxyPoolConfig (line 199) | interface ProxyPoolConfig { FILE: src/utils/clipboard.ts function copyToClipboard (line 7) | async function copyToClipboard(text: string): Promise { FILE: src/utils/cn.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { FILE: src/utils/format.ts function formatRelativeTime (line 4) | function formatRelativeTime(timestamp: number, language: string = 'zh-CN... function formatBytes (line 19) | function formatBytes(bytes: number): string { function getQuotaColor (line 29) | function getQuotaColor(percentage: number): string { function formatTimeRemaining (line 35) | function formatTimeRemaining(dateStr: string): string { function getTimeRemainingColor (line 54) | function getTimeRemainingColor(dateStr: string | undefined): string { function formatDate (line 69) | function formatDate(timestamp: string | number | undefined | null): stri... function formatCompactNumber (line 88) | function formatCompactNumber(num: number): string { FILE: src/utils/request.ts constant COMMAND_MAPPING (line 5) | const COMMAND_MAPPING: Record(cmd: string, args?: any): Promise {