{ "nodes": [ { "id": "document:AGENTS.md", "type": "document", "name": "AGENTS.md", "filePath": "AGENTS.md", "summary": "Репозиторные правила для агентов: модель системы, live VPN safety, тестовая лестница и контракт финального ответа.", "tags": [ "agent-rules", "documentation", "safety" ], "complexity": "moderate" }, { "id": "document:README.md", "type": "document", "name": "README.md", "filePath": "README.md", "summary": "Основная пользовательская документация Lemana VPN: установка, credential sources, модули, использование, диагностика и удаление.", "tags": [ "documentation", "overview", "user-guide" ], "complexity": "complex" }, { "id": "file:install.sh", "type": "file", "name": "install.sh", "filePath": "install.sh", "summary": "Installer wizard для Homebrew/pipx/openconnect-lite, CLI, config, DNS wrapper, sudoers, Touch ID helper, Swift app, launch agent и shell aliases.", "tags": [ "installer", "wizard", "macos" ], "complexity": "complex" }, { "id": "function:install.sh:usage", "type": "function", "name": "usage", "filePath": "install.sh", "lineRange": [ 72, 106 ], "summary": "Значимая функция usage в install.sh.", "tags": [ "function", "runtime", "usage" ], "complexity": "simple" }, { "id": "function:install.sh:yes_no", "type": "function", "name": "yes_no", "filePath": "install.sh", "lineRange": [ 304, 330 ], "summary": "Значимая функция yes_no в install.sh.", "tags": [ "function", "runtime", "yes-no" ], "complexity": "simple" }, { "id": "function:install.sh:choose_credential_source_interactive", "type": "function", "name": "choose_credential_source_interactive", "filePath": "install.sh", "lineRange": [ 332, 382 ], "summary": "Показывает интерактивный выбор credential source и нормализует ответ пользователя.", "tags": [ "function", "runtime", "choose-credential-source-interactive" ], "complexity": "moderate" }, { "id": "function:install.sh:print_detected_state", "type": "function", "name": "print_detected_state", "filePath": "install.sh", "lineRange": [ 400, 417 ], "summary": "Значимая функция print_detected_state в install.sh.", "tags": [ "function", "runtime", "print-detected-state" ], "complexity": "simple" }, { "id": "function:install.sh:choose_modules", "type": "function", "name": "choose_modules", "filePath": "install.sh", "lineRange": [ 419, 514 ], "summary": "Определяет набор устанавливаемых модулей с учетом интерактивного режима и флагов installer.", "tags": [ "function", "runtime", "choose-modules" ], "complexity": "moderate" }, { "id": "function:install.sh:download_file", "type": "function", "name": "download_file", "filePath": "install.sh", "lineRange": [ 523, 540 ], "summary": "Значимая функция download_file в install.sh.", "tags": [ "function", "runtime", "download-file" ], "complexity": "simple" }, { "id": "function:install.sh:install_homebrew_packages", "type": "function", "name": "install_homebrew_packages", "filePath": "install.sh", "lineRange": [ 552, 578 ], "summary": "Значимая функция install_homebrew_packages в install.sh.", "tags": [ "function", "runtime", "install-homebrew-packages" ], "complexity": "simple" }, { "id": "function:install.sh:install_openconnect_lite", "type": "function", "name": "install_openconnect_lite", "filePath": "install.sh", "lineRange": [ 580, 597 ], "summary": "Устанавливает или проверяет openconnect-lite runtime, необходимый для SAML SSO.", "tags": [ "function", "runtime", "install-openconnect-lite" ], "complexity": "simple" }, { "id": "function:install.sh:install_cli", "type": "function", "name": "install_cli", "filePath": "install.sh", "lineRange": [ 599, 613 ], "summary": "Копирует основной CLI и uninstall helper в пользовательский bin.", "tags": [ "function", "runtime", "install-cli" ], "complexity": "simple" }, { "id": "function:install.sh:install_config", "type": "function", "name": "install_config", "filePath": "install.sh", "lineRange": [ 615, 639 ], "summary": "Устанавливает шаблон openconnect-lite config и сохраняет локальную конфигурацию модулей.", "tags": [ "function", "runtime", "install-config" ], "complexity": "simple" }, { "id": "function:install.sh:install_dns_cleanup", "type": "function", "name": "install_dns_cleanup", "filePath": "install.sh", "lineRange": [ 641, 654 ], "summary": "Устанавливает root-owned DNS cleanup wrapper для безопасного сброса корпоративных DNS.", "tags": [ "function", "runtime", "install-dns-cleanup" ], "complexity": "simple" }, { "id": "function:install.sh:install_sudoers", "type": "function", "name": "install_sudoers", "filePath": "install.sh", "lineRange": [ 656, 683 ], "summary": "Пишет ограниченные sudoers правила для openconnect и DNS cleanup wrapper.", "tags": [ "function", "runtime", "install-sudoers" ], "complexity": "simple" }, { "id": "function:install.sh:install_touchid_helper", "type": "function", "name": "install_touchid_helper", "filePath": "install.sh", "lineRange": [ 685, 708 ], "summary": "Собирает и устанавливает Touch ID helper для Bitwarden master password.", "tags": [ "function", "runtime", "install-touchid-helper" ], "complexity": "simple" }, { "id": "function:install.sh:install_menu_bar_app", "type": "function", "name": "install_menu_bar_app", "filePath": "install.sh", "lineRange": [ 710, 769 ], "summary": "Собирает release-версию Swift menu bar app и устанавливает LemanaVPN.app.", "tags": [ "function", "runtime", "install-menu-bar-app" ], "complexity": "moderate" }, { "id": "function:install.sh:install_launch_agent", "type": "function", "name": "install_launch_agent", "filePath": "install.sh", "lineRange": [ 771, 811 ], "summary": "Создает LaunchAgent для автозапуска menu bar app при логине.", "tags": [ "function", "runtime", "install-launch-agent" ], "complexity": "simple" }, { "id": "function:install.sh:restart_running_menu_bar_app", "type": "function", "name": "restart_running_menu_bar_app", "filePath": "install.sh", "lineRange": [ 813, 831 ], "summary": "Перезапускает уже открытое menu bar приложение после обновления bundle.", "tags": [ "function", "runtime", "restart-running-menu-bar-app" ], "complexity": "simple" }, { "id": "function:install.sh:install_shell_aliases", "type": "function", "name": "install_shell_aliases", "filePath": "install.sh", "lineRange": [ 833, 877 ], "summary": "Добавляет idempotent zsh aliases для CLI режимов подключения и диагностики.", "tags": [ "function", "runtime", "install-shell-aliases" ], "complexity": "simple" }, { "id": "function:install.sh:maybe_login_bitwarden", "type": "function", "name": "maybe_login_bitwarden", "filePath": "install.sh", "lineRange": [ 879, 900 ], "summary": "Проверяет Bitwarden session и при необходимости запускает login/unlock flow.", "tags": [ "function", "runtime", "maybe-login-bitwarden" ], "complexity": "simple" }, { "id": "function:install.sh:main", "type": "function", "name": "main", "filePath": "install.sh", "lineRange": [ 902, 941 ], "summary": "Значимая функция main в install.sh.", "tags": [ "function", "runtime", "main" ], "complexity": "simple" }, { "id": "file:uninstall.sh", "type": "file", "name": "uninstall.sh", "filePath": "uninstall.sh", "summary": "Uninstaller для восстановления runtime patch backups, удаления CLI/app/config/sudoers/aliases и опциональной очистки Keychain/Touch ID state.", "tags": [ "uninstaller", "cleanup", "macos" ], "complexity": "complex" }, { "id": "function:uninstall.sh:usage", "type": "function", "name": "usage", "filePath": "uninstall.sh", "lineRange": [ 62, 79 ], "summary": "Значимая функция usage в uninstall.sh.", "tags": [ "function", "runtime", "usage" ], "complexity": "simple" }, { "id": "function:uninstall.sh:restore_openconnect_lite_patch", "type": "function", "name": "restore_openconnect_lite_patch", "filePath": "uninstall.sh", "lineRange": [ 161, 181 ], "summary": "Возвращает backup исходника openconnect-lite, если runtime patch был установлен.", "tags": [ "function", "runtime", "restore-openconnect-lite-patch" ], "complexity": "simple" }, { "id": "function:uninstall.sh:remove_zshrc_block", "type": "function", "name": "remove_zshrc_block", "filePath": "uninstall.sh", "lineRange": [ 183, 204 ], "summary": "Удаляет idempotent блок Lemana VPN aliases из zshrc.", "tags": [ "function", "runtime", "remove-zshrc-block" ], "complexity": "simple" }, { "id": "function:uninstall.sh:remove_keychain_entries", "type": "function", "name": "remove_keychain_entries", "filePath": "uninstall.sh", "lineRange": [ 206, 234 ], "summary": "Опционально удаляет password, TOTP seed и username из macOS Keychain.", "tags": [ "function", "runtime", "remove-keychain-entries" ], "complexity": "simple" }, { "id": "function:uninstall.sh:main", "type": "function", "name": "main", "filePath": "uninstall.sh", "lineRange": [ 236, 318 ], "summary": "Значимая функция main в uninstall.sh.", "tags": [ "function", "runtime", "main" ], "complexity": "moderate" } ], "edges": [ { "source": "file:install.sh", "target": "function:install.sh:usage", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:install.sh", "target": "function:install.sh:yes_no", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:install.sh", "target": "function:install.sh:choose_credential_source_interactive", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:install.sh", "target": "function:install.sh:print_detected_state", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:install.sh", "target": "function:install.sh:choose_modules", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:install.sh", "target": "function:install.sh:download_file", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:install.sh", "target": "function:install.sh:install_homebrew_packages", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:install.sh", "target": "function:install.sh:install_openconnect_lite", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:install.sh", "target": "function:install.sh:install_cli", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:install.sh", "target": "function:install.sh:install_config", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:install.sh", "target": "function:install.sh:install_dns_cleanup", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:install.sh", "target": "function:install.sh:install_sudoers", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:install.sh", "target": "function:install.sh:install_touchid_helper", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:install.sh", "target": "function:install.sh:install_menu_bar_app", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:install.sh", "target": "function:install.sh:install_launch_agent", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:install.sh", "target": "function:install.sh:restart_running_menu_bar_app", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:install.sh", "target": "function:install.sh:install_shell_aliases", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:install.sh", "target": "function:install.sh:maybe_login_bitwarden", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:install.sh", "target": "function:install.sh:main", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:uninstall.sh", "target": "function:uninstall.sh:usage", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:uninstall.sh", "target": "function:uninstall.sh:restore_openconnect_lite_patch", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:uninstall.sh", "target": "function:uninstall.sh:remove_zshrc_block", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:uninstall.sh", "target": "function:uninstall.sh:remove_keychain_entries", "type": "contains", "direction": "forward", "weight": 1 }, { "source": "file:uninstall.sh", "target": "function:uninstall.sh:main", "type": "contains", "direction": "forward", "weight": 1 } ] }