Files
OmniRoute/bin/cli/locales/ru.json
Diego Rodrigues de Sa e Souza 9d9284417c fix(cli): translate the CLI for every locale (38 catalogs were nearly empty) (#13892)
sync-ui-keys --catalog=cli + blocking i18n:check-keys:cli gate; 65 CLI catalogs synced (52,000 strings, 0 __MISSING__, all 830 keys, placeholders verified). ⚠️ base-red inherited: #12732
2026-09-16 12:27:59 -03:00

1341 lines
80 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"common": {
"error": "Ошибка: {message}",
"serverOffline": "Сервер OmniRoute отключён. Запустите: omniroute serve",
"authRequired": "Требуется аутентификация. Установите OMNIROUTE_API_KEY или выполните: omniroute setup",
"rateLimited": "Превышен лимит запросов. Повторите через {seconds}с.",
"timeout": "Запрос истёк через {ms}мс.",
"success": "Готово.",
"yes": "да",
"no": "нет",
"confirm": "Вы уверены? (да/нет)",
"dryRun": "[симуляция] выполнит: {action}",
"cancelled": "Отменено.",
"jsonOpt": "Вывод в формате JSON",
"yesOpt": "Пропустить подтверждение"
},
"setup": {
"title": "Настройка OmniRoute",
"passwordPrompt": "Пароль администратора",
"providerPrompt": "Провайдер по умолчанию (оставьте пустым, чтобы пропустить)",
"done": "Настройка завершена",
"passwordSet": "Пароль администратора настроен",
"providerSet": "Провайдер настроен: {name}",
"testingProvider": "Проверка подключения к провайдеру: {name}",
"testPassed": "Проверка провайдера пройдена",
"testFailed": "Проверка провайдера не пройдена: {error}",
"loginEnabled": "Вход: включён (пароль обновлён)",
"loginDisabled": "Вход: отключён",
"providerInfo": "Провайдер: {info}",
"opencode": "Установить и настроить встроенный плагин @omniroute/opencode-plugin для OpenCode"
},
"doctor": {
"title": "Диагностика OmniRoute",
"dbOk": "База данных: ОК ({path})",
"dbMissing": "База данных: не инициализирована — выполните `omniroute setup`",
"portOk": "Порт {port}: доступен",
"portConflict": "Порт {port}: используется другим процессом",
"encryptionOk": "Ключ шифрования: настроен",
"encryptionMissing": "Ключ шифрования отсутствует — выполните `omniroute setup`",
"allGood": "Все проверки пройдены.",
"warnings": "Предупреждений: {count} — см. выше."
},
"providers": {
"title": "Провайдеры",
"noProviders": "Провайдеры не настроены. Выполните: omniroute setup",
"testing": "Проверка {name}...",
"available": "Доступно провайдеров: {count}",
"connected": "Подключено",
"disconnected": "Отключено",
"validationFailed": "Ошибка проверки: {error}",
"metrics": {
"description": "Показать показатели производительности провайдеров (задержка, доля успешных запросов, стоимость)",
"provider": "Фильтровать по ID провайдера",
"connection_id": "Фильтровать по ID подключения",
"period": "Период времени: 1h|6h|24h|7d|30d (по умолчанию: 24h)",
"metric": "Выбрать конкретный показатель",
"sort": "Сортировать по полю (по убыванию)",
"limit": "Максимальное количество строк (по умолчанию: 50)",
"watch": "Обновлять каждые 5 с (режим реального времени)",
"compare": "ID провайдеров через запятую для параллельного сравнения"
},
"metric_single": {
"description": "Получить одно значение показателя для конкретного подключения"
},
"rotate": {
"description": "Обновить вышестоящий API-ключ для подключения к провайдеру",
"newKeyOpt": "Новое значение API-ключа (не рекомендуется: используйте --from-env)",
"fromEnvOpt": "Прочитать новый ключ из переменной окружения VAR",
"oauthOpt": "Вместо этого запустить повторную OAuth-аутентификацию",
"skipTestOpt": "Пропустить проверку подключения после ротации",
"dryRunOpt": "Показать изменения без их применения",
"confirmPrompt": "Заменить API-ключ для подключения «{name}» ({id})? [y/N]",
"dryRunResult": "[dry-run] Будет выполнена ротация ключа для «{name}» ({id}). Изменения не внесены.",
"oauthHint": "OAuth-подключение — выполните: omniroute oauth {provider}",
"envVarEmpty": "Переменная окружения {var} не задана или пуста.",
"success": "Ключ для «{name}» ротирован. Выполните `providers test {id}` для проверки.",
"testPassed": "Проверка после ротации успешно пройдена.",
"testFailed": "Проверка после ротации завершилась ошибкой: {error}"
},
"status": {
"description": "Показать состояние ключей для всех подключений к провайдерам (возраст, срок действия, период ожидания)",
"providerOpt": "Фильтровать по имени провайдера",
"header": "ID Провайдер Имя Срок действия Статус Статус проверки Ожидание до",
"noData": "Данные о подключениях к провайдерам отсутствуют.",
"requiresServer": "Для выполнения providers status сервер OmniRoute должен быть запущен."
}
},
"keys": {
"title": "API-ключи",
"addDescription": "Добавить или обновить API-ключ провайдера",
"listDescription": "Показать все настроенные API-ключи",
"removeDescription": "Удалить API-ключ провайдера",
"regenerateDescription": "Создать новый API-ключ OmniRoute",
"revokeDescription": "Отозвать API-ключ OmniRoute",
"revealDescription": "Показать незамаскированное значение API-ключа",
"usageDescription": "Показать недавнее использование API-ключа",
"usageLimitOpt": "Количество недавних запросов",
"rotateDescription": "Создать новый ключ и сделать старый недействительным",
"graceOpt": "Льготный период (мс) до аннулирования старого ключа",
"stdinOpt": "Прочитать API-ключ из stdin вместо аргумента",
"added": "Ключ для {provider} добавлен.",
"removed": "Ключ удалён.",
"listed": "Ключей: {count}.",
"noKeys": "Нет настроенных ключей.",
"noUsage": "Данные об использовании не найдены.",
"confirmRemove": "Удалить ключ {id}?",
"confirmRegenerate": "Создать заново ключ {id}?",
"confirmRevoke": "Отозвать ключ {id}?",
"confirmRotate": "Ротировать ключ {id}? (старый ключ будет аннулирован после льготного периода)",
"regenerated": "Ключ создан заново. Новый ключ: {key}",
"revoked": "Ключ {id} отозван.",
"rotated": "Ключ {id} ротирован. Новый ID ключа: {newId}",
"revealWarning": "⚠ Будет показан полный ключ без маскировки. Убедитесь, что посторонние не видят ваш экран.",
"providerRequired": "Необходимо указать провайдера.",
"keyRequired": "Необходимо указать API-ключ.",
"stdinEmpty": "API-ключ не передан через stdin.",
"unknownProvider": "Неизвестный провайдер: {provider}",
"policy": {
"title": "Политика ключа",
"showDescription": "Показать ограничения по частоте запросов и стоимости для ключа",
"setDescription": "Установить ограничения по частоте запросов и стоимости для ключа",
"rateLimitOpt": "Максимум запросов в минуту",
"maxCostOpt": "Максимальная стоимость в день (USD)",
"allowedModelsOpt": "Список разрешённых моделей через запятую",
"nothingToSet": "Поля политики не указаны. Используйте --rate-limit, --max-cost или --allowed-models.",
"updated": "Политика обновлена."
},
"expiration": {
"title": "Срок действия ключа",
"listDescription": "Показать ключи, срок действия которых скоро истекает",
"daysOpt": "Показать ключи, срок действия которых истекает в течение N дней",
"none": "Нет ключей, срок действия которых истекает в течение {days} дней.",
"listTitle": "Ключи, срок действия которых истекает в течение {days} дней:"
}
},
"authExport": {
"description": "Экспортировать РАСШИФРОВАННЫЕ учётные данные провайдера (только локально, вывод открытым текстом)",
"idOpt": "Экспортировать только подключение, соответствующее этому ID, имени или провайдеру",
"formatOpt": "Формат вывода: json или env",
"outOpt": "Записать вывод в файл вместо stdout (с правами доступа 0600)",
"forceOpt": "Подтвердить, что вы понимаете: секретные данные будут выведены или записаны открытым текстом",
"warning": "⚠ Команда выводит или записывает РАСШИФРОВАННЫЕ API-ключи и OAuth-токены открытым текстом. Убедитесь, что ваш экран, история команд оболочки и любой выходной файл недоступны посторонним.",
"confirmHeading": "⚠ ПРЕДУПРЕЖДЕНИЕ: эта команда экспортирует РАСШИФРОВАННЫЕ учётные данные провайдера открытым текстом",
"confirmBody": "Эта команда расшифровывает и выводит или записывает apiKey, accessToken, refreshToken и\nidToken для выбранных подключений. Обращайтесь с выводом как с секретными данными.",
"confirmFooter": "Для подтверждения выполните:\n omniroute auth export --force",
"missingKey": "Для экспорта учётных данных требуется STORAGE_ENCRYPTION_KEY.",
"notFound": "Подключение не найдено: {id}",
"invalidFormat": "Недопустимый формат: {format}. Используйте json или env."
},
"stream": {
"description": "Потоковый вывод ответа чата с режимами проверки SSE",
"file": "Прочитать запрос из файла",
"stdin": "Прочитать запрос из stdin",
"model": "ID модели (по умолчанию: auto)",
"system": "Системный запрос",
"combo": "Принудительно использовать конкретную комбинацию по имени",
"max_tokens": "Максимальное количество токенов в ответе",
"responses_api": "Использовать /v1/responses вместо /v1/chat/completions",
"raw": "Выводить необработанные строки SSE по мере получения",
"debug": "Выводить сведения о времени обработки каждого фрагмента в stderr",
"save": "Сохранять все события SSE в файл .jsonl",
"error": {
"empty_prompt": "Ошибка: требуется промпт (позиционный аргумент, --file или --stdin)"
}
},
"usage": {
"description": "Аналитика использования, бюджеты, квоты и журналы",
"analytics": {
"description": "Показать агрегированную аналитику использования",
"period": "Период: 1d|7d|30d|90d|ytd|all (по умолчанию: 30d)",
"provider": "Фильтровать по ID провайдера"
},
"budget": {
"description": "Управлять бюджетами расходов",
"set": {
"scope": "Область действия бюджета (по умолчанию: global)",
"period": "Период бюджета: daily|weekly|monthly (по умолчанию: monthly)"
}
},
"quota": {
"description": "Показать использование квоты провайдера",
"provider": "Фильтровать по ID провайдера",
"check": "Показать, доступна ли квота для нового запроса"
},
"logs": {
"description": "Показать журналы вызовов запросов",
"limit": "Количество возвращаемых записей журнала (по умолчанию: 100)",
"search": "Поисковый запрос для фильтрации журналов",
"since": "Вернуть записи журнала начиная с этой временной метки",
"follow": "Непрерывно отслеживать новые записи журнала",
"api_key": "Фильтровать журналы по ключу API"
},
"utilization": {
"description": "Показать метрики использования ключей API",
"api_key": "Фильтровать по ключу API"
},
"history": {
"description": "Показать историю запросов",
"limit": "Количество записей истории (по умолчанию: 100)"
},
"proxy_logs": {
"description": "Показать журналы запросов на уровне прокси",
"limit": "Количество записей журнала прокси (по умолчанию: 100)"
}
},
"cost": {
"description": "Показать отчёт о расходах с разбивкой по провайдеру, модели, комбинации или ключу API",
"period": "Период: 1d|7d|30d|90d|ytd|all (по умолчанию: 30d)",
"since": "Дата начала (формат ISO, например 2026-01-01) — переопределяет --period",
"until": "Дата окончания (формат ISO)",
"group_by": "Группировать результаты по: provider|model|api-key|combo|day (по умолчанию: provider)",
"api_key_filter": "Фильтровать по определённому ключу API",
"limit": "Максимальное количество отображаемых строк (по умолчанию: 100)"
},
"simulate": {
"description": "Пробная симуляция маршрутизации — показать, какие провайдеры были бы выбраны, без обращения к вышестоящему сервису",
"file": "Загрузить полное тело запроса из файла JSON",
"model": "ID модели (по умолчанию: auto)",
"combo": "Принудительно использовать определённую комбинацию по имени",
"reasoning": "Уровень глубины рассуждений (low|medium|high)",
"thinking": "Бюджет токенов для расширенного мышления",
"explain": "Вывести дерево резервных вариантов и диапазон стоимости в stderr",
"noCombo": "Подходящая комбинация не найдена. Настройте её с помощью команды: omniroute combo create"
},
"chat": {
"description": "Отправить одноразовый запрос чата в OmniRoute",
"file": "Прочитать запрос из файла",
"stdin": "Прочитать запрос из stdin",
"system": "Системный промпт",
"model": "ID модели (по умолчанию: auto)",
"max_tokens": "Максимальное количество токенов в ответе",
"temperature": "Температура сэмплирования (02)",
"top_p": "Ядерное сэмплирование Top-p",
"reasoning_effort": "Уровень глубины рассуждений (low|medium|high)",
"thinking_budget": "Бюджет токенов для расширенного рассуждения",
"combo": "Принудительно использовать определённую комбинацию по имени",
"responses_api": "Использовать /v1/responses вместо /v1/chat/completions",
"stream": "Передавать ответ по частям",
"no_history": "Не сохранять в ~/.omniroute/cli-history.jsonl",
"error": {
"empty_prompt": "Ошибка: требуется запрос (позиционный аргумент, --file или --stdin)"
}
},
"serve": {
"description": "Запустить сервер OmniRoute (действие по умолчанию)",
"starting": "Запуск сервера OmniRoute на порту {port}...",
"ready": "Доступен по адресу http://localhost:{port}",
"stopping": "Остановка сервера (PID {pid})...",
"stopped": "Сервер остановлен.",
"notRunning": "Сервер не запущен.",
"port": "Порт для прослушивания (по умолчанию: 20128)",
"no_open": "Не открывать браузер автоматически",
"daemon": "Запустить сервер как фоновый демон",
"log": "Показывать журналы сервера непосредственно в консоли",
"no_recovery": "Отключить автоматический перезапуск при сбое (режим отладки)",
"max_restarts": "Максимальное количество перезапусков после сбоев в течение 30 с (по умолчанию: 2)",
"tray": "Запустить в системном трее (только для настольных систем, по явному согласию)",
"no_tray": "Отключить значок в системном трее",
"ready_timeout": "Тайм-аут проверки готовности в мс (также OMNIROUTE_READY_TIMEOUT_MS, по умолчанию: 60000)",
"tls_cert": "Путь к TLS-сертификату (PEM) для обслуживания HTTPS (также OMNIROUTE_TLS_CERT)",
"tls_key": "Путь к закрытому ключу TLS (PEM) для обслуживания HTTPS (также OMNIROUTE_TLS_KEY)"
},
"backup": {
"title": "Резервная копия",
"description": "Создать резервную копию данных OmniRoute",
"creating": "Создание резервной копии...",
"done": "Резервная копия сохранена в {path}",
"noFiles": "Нет файлов для резервного копирования (база данных не инициализирована)",
"failed": "Не удалось создать резервную копию: {error}",
"restoring": "Восстановление из {path}...",
"restored": "Восстановление завершено.",
"restoreDescription": "Восстановить из резервной копии",
"listTitle": "Доступные резервные копии",
"noBackups": "Резервные копии не найдены.",
"notFound": "Резервная копия не найдена: {name}",
"confirmRestore": "Перезаписать текущие данные резервной копией от {ts}?",
"createDescription": "Создать резервную копию данных OmniRoute",
"nameOpt": "Пользовательское имя резервной копии",
"cloudOpt": "Загрузить резервную копию в облачное хранилище",
"encryptOpt": "Зашифровать резервную копию с помощью AES-256-GCM",
"keyFileOpt": "Путь к файлу, содержащему парольную фразу для шифрования",
"excludeOpt": "Исключить файлы, соответствующие шаблону (можно указать несколько раз)",
"retentionOpt": "Сохранять только последние N резервных копий",
"passphrasePrompt": "Парольная фраза для шифрования:",
"noPassphrase": "Для зашифрованной резервной копии требуется парольная фраза.",
"cloudFailed": "Предупреждение: не удалось загрузить резервную копию в облако. Локальная резервная копия сохранена.",
"cloudUploaded": "Резервная копия загружена в облако: {url}",
"auto": {
"title": "Расписание резервного копирования",
"enableDescription": "Включить автоматическое резервное копирование по расписанию",
"disableDescription": "Отключить автоматическое резервное копирование по расписанию",
"statusDescription": "Показать текущее состояние расписания резервного копирования",
"cronOpt": "Cron-выражение для расписания (по умолчанию: ежедневно в 3:00)",
"enabled": "Автоматическое резервное копирование включено (cron: {cron}).",
"hint": "Расписание считывается командой omniroute serve при запуске.",
"disabled": "Автоматическое резервное копирование отключено.",
"notConfigured": "Расписание резервного копирования не настроено."
}
},
"health": {
"description": "Проверить работоспособность сервера и состояние компонентов",
"noServer": "Сервер не запущен. Запустите его командой: omniroute serve",
"title": "Работоспособность",
"status": "Состояние: {status}",
"uptime": "Время работы: {uptime}",
"requests": "Запросы (24 ч): {count}",
"cost": "Стоимость (24 ч): ${cost}"
},
"quota": {
"description": "Показать использование квоты провайдера",
"noServer": "Сервер не запущен. Запустите его командой: omniroute serve",
"noData": "Информация о квоте недоступна."
},
"cache": {
"description": "Управление кешем ответов",
"noServer": "Сервер не запущен. Запустите его командой: omniroute serve",
"cleared": "Кеш очищен.",
"clearFailed": "Не удалось очистить кеш."
},
"redis": {
"description": "Запустить локальный контейнер Redis одним нажатием (Podman или Docker) для кэширования и отслеживания квот OmniRoute"
},
"test": {
"description": "Проверить подключение к провайдеру",
"noServer": "Сервер не запущен. Запустите его командой: omniroute serve",
"testing": "Тестирование {provider} / {model}...",
"passed": "Подключение успешно!",
"failed": "Не удалось подключиться: {error}",
"allProvidersOpt": "Протестировать всех настроенных провайдеров",
"latencyOpt": "Показывать измерения задержки (среднее/минимум/максимум, мс)",
"repeatOpt": "Повторить тест N раз и агрегировать результаты",
"compareOpt": "Модели для сравнения через запятую (например, gpt-4o,claude-3-5-sonnet)",
"saveOpt": "Сохранить результаты в JSON-файл",
"saved": "Результаты сохранены в {path}",
"compareTitle": "Сравнение моделей",
"compareMinTwo": "Для --compare требуется не менее двух моделей (через запятую)",
"noProviders": "Нет настроенных провайдеров. Добавьте провайдера командой: omniroute keys add"
},
"update": {
"checking": "Проверка обновлений...",
"upToDate": "Уже установлена актуальная версия ({version}).",
"available": "Доступно обновление: {current} → {latest}",
"installing": "Установка {latest}...",
"done": "Обновлено до версии {latest}. Перезапустите сервер, чтобы применить изменения."
},
"mcp": {
"title": "Сервер MCP",
"running": "Сервер MCP запущен ({transport})",
"stopped": "Сервер MCP остановлен.",
"restarted": "Сервер MCP перезапущен.",
"stoppedHint": "Выполните `omniroute mcp enable`, чтобы включить его.",
"enabled": "Сервер MCP включён.",
"disabled": "Сервер MCP отключён.",
"enable": {
"description": "Включить сервер MCP",
"transport": "Используемый транспорт: stdio|sse|streamable-http"
},
"disable": {
"description": "Отключить сервер MCP"
},
"call": {
"description": "Вызвать инструмент MCP напрямую",
"args": "Объект аргументов JSON (встроенный)",
"args_file": "Путь к файлу аргументов JSON",
"stream": "Использовать потоковую конечную точку (/api/mcp/stream)",
"scope": "Требуемая область доступа (можно указать несколько раз, например read:health)"
},
"scopes": {
"description": "Показать доступные области доступа MCP",
"tool": "Показать области доступа, необходимые конкретному инструменту"
},
"tools": {
"description": "Просмотреть инструменты MCP",
"list": {
"description": "Показать все инструменты MCP",
"scope": "Фильтровать по области доступа"
},
"info": {
"description": "Показать метаданные инструмента MCP"
},
"schema": {
"description": "Показать JSON-схему входных и выходных данных инструмента MCP",
"io": "Тип схемы: input|output (по умолчанию: input)"
}
},
"audit": {
"description": "Журнал аудита MCP (псевдоним для audit --source mcp)"
}
},
"a2a": {
"skills": {
"description": "Показать доступные навыки A2A из карточки агента"
},
"invoke": {
"description": "Вызвать навык A2A и вернуть идентификатор задачи",
"input": "Входной объект JSON",
"input_file": "Путь к входному файлу JSON",
"wait": "Ожидать завершения задачи перед возвратом",
"timeout": "Тайм-аут ожидания завершения в мс (по умолчанию: 60000)"
},
"tasks": {
"description": "Управление задачами A2A",
"list": {
"status": "Фильтровать по статусу",
"skill": "Фильтровать по идентификатору навыка"
},
"watch": {
"description": "Опрашивать статус задачи до её завершения"
},
"stream": {
"description": "Передавать события выполнения задачи в потоковом режиме через SSE"
},
"logs": {
"description": "Показать сообщения и артефакты задачи"
}
}
},
"policy": {
"description": "Управление политиками авторизации OmniRoute",
"list": {
"description": "Показать список политик",
"kind": "Фильтровать по типу (allow|deny|rate-limit|cost-cap)",
"scope": "Фильтровать по области действия (global|api-key|provider)"
},
"get": {
"description": "Получить сведения о политике по идентификатору"
},
"create": {
"description": "Создать политику из файла JSON",
"file": "Путь к файлу JSON политики"
},
"update": {
"description": "Обновить политику из файла JSON",
"file": "Путь к файлу JSON политики"
},
"delete": {
"description": "Удалить политику по идентификатору",
"yes": "Пропустить запрос подтверждения"
},
"evaluate": {
"description": "Пробная оценка политики (код выхода 0 — разрешено, 4 — запрещено)",
"api_key": "Ключ API для оценки",
"action": "Проверяемое действие (например, chat, embed, admin)",
"resource": "Путь к ресурсу или идентификатор",
"context": "Дополнительный контекст в виде объекта JSON"
},
"export": {
"description": "Экспортировать все политики в файл JSON"
},
"import": {
"description": "Импортировать политики из файла JSON",
"overwrite": "Перезаписать существующие политики с тем же идентификатором"
}
},
"compression": {
"description": "Настройка и проверка конвейера сжатия OmniRoute",
"status": {
"description": "Показать текущий статус и настройки сжатия"
},
"configure": {
"description": "Настроить параметры сжатия",
"engine": "Механизм сжатия (caveman|rtk|hybrid|none)",
"caveman_agg": "Степень агрессивности Caveman: 0.01.0",
"rtk_budget": "Бюджет токенов RTK",
"language_pack": "Языковой пакет для активации"
},
"engine": {
"description": "Получить или задать активный механизм сжатия"
},
"combos": {
"description": "Управление статистикой комбинаций сжатия"
},
"rules": {
"description": "Управление правилами сжатия",
"add": {
"pattern": "Шаблон для сопоставления (регулярное выражение или поле:шаблон)",
"action": "Действие: drop|shrink|replace"
}
},
"language_packs": {
"description": "Показать доступные языковые пакеты сжатия"
},
"preview": {
"description": "Предварительно оценить эффект сжатия для запроса",
"file": "Путь к JSON-файлу запроса"
}
},
"tunnel": {
"title": "Туннели",
"listDescription": "Показать активные туннели",
"createDescription": "Создать туннель",
"created": "Туннель создан: {url}",
"stopped": "Туннель остановлен.",
"confirmStop": "Остановить туннель {id}?",
"stopDescription": "Остановить туннель",
"statusDescription": "Показать подробное состояние туннеля",
"logsDescription": "Показать журналы туннеля",
"infoDescription": "Показать сведения о конфигурации туннеля",
"rotateDescription": "Создать новый URL туннеля",
"tailOpt": "Количество отображаемых строк журнала",
"typeRequired": "Необходимо указать тип туннеля.",
"noLogs": "Журналы недоступны.",
"notAvailable": "Информация о туннеле недоступна.",
"noTunnels": "Нет активных туннелей.",
"infoTitle": "Информация о туннеле: {type}",
"rotated": "URL туннеля обновлён: {url}",
"confirmRotate": "Обновить URL туннеля {type}? (будет создан новый URL)"
},
"stop": {
"description": "Остановить сервер OmniRoute",
"stopping": "Остановка сервера (PID {pid})...",
"stopped": "Сервер остановлен.",
"notRunning": "Сервер не запущен.",
"portFallback": "PID-файл не найден, выполняется попытка остановки по порту..."
},
"restart": {
"description": "Перезапустить сервер OmniRoute",
"restarting": "Перезапуск сервера OmniRoute..."
},
"dashboard": {
"description": "Открыть панель управления OmniRoute в браузере",
"opening": "Открытие панели управления по адресу {url}",
"urlOnly": "Вывести URL панели управления, не открывая браузер",
"tui": "Открыть интерактивную TUI-панель управления (терминальный интерфейс, 7 вкладок)"
},
"models": {
"description": "Показать доступные модели (требуется сервер)",
"search": "Фильтровать модели по идентификатору, названию, провайдеру или описанию",
"noServer": "Сервер не запущен. Запустите его командой: omniroute serve",
"noModels": "Модели не найдены."
},
"audit": {
"description": "Доступ к журналам аудита соответствия требованиям и MCP",
"source": "Источник журнала: all|compliance|mcp (по умолчанию: all)",
"since": "Вернуть записи, начиная с этой временной метки (ISO 8601)",
"until": "Вернуть записи до этой временной метки (ISO 8601)",
"tail": {
"description": "Показать последние записи журнала аудита",
"follow": "Непрерывно отслеживать новые записи (опрос каждые 2 с)",
"limit": "Максимальное количество отображаемых записей (по умолчанию: 100)"
},
"search": {
"description": "Поиск записей журнала аудита по ключевому слову",
"limit": "Максимальное количество результатов (по умолчанию: 200)",
"actor": "Фильтровать по ID субъекта",
"action": "Фильтровать по названию действия"
},
"export": {
"description": "Экспортировать журнал аудита в файл",
"format": "Формат вывода: jsonl|csv (по умолчанию: jsonl)"
},
"stats": {
"description": "Показать статистику журнала аудита",
"period": "Период времени: 1d|7d|30d (по умолчанию: 7d)"
},
"get": {
"description": "Получить отдельную запись журнала аудита по ID"
}
},
"skills": {
"description": "Управление навыками OmniRoute (sandbox, builtin, custom, hybrid, skillssh)",
"list": {
"description": "Показать список установленных навыков",
"type": "Фильтровать по типу (sandbox|custom|builtin|hybrid|skillssh)",
"enabled": "Показать только включённые навыки",
"disabled": "Показать только отключённые навыки",
"api_key": "Фильтровать по API-ключу"
},
"get": {
"description": "Получить сведения о навыке по ID"
},
"install": {
"description": "Установить навык из файла или по URL",
"from_file": "Путь к JSON-файлу определения навыка",
"from_url": "URL удалённого определения навыка",
"type": "Тип навыка (sandbox|custom|hybrid)",
"enable": "Включить навык после установки"
},
"enable": {
"description": "Включить навык по ID"
},
"disable": {
"description": "Отключить навык по ID",
"yes": "Пропустить запрос подтверждения"
},
"delete": {
"description": "Удалить навык по ID",
"yes": "Пропустить запрос подтверждения"
},
"execute": {
"description": "Выполнить навык по ID",
"input": "Входной JSON-объект",
"input_file": "Путь к файлу входных данных JSON",
"timeout": "Тайм-аут выполнения в мс (по умолчанию: 30000)"
},
"executions": {
"description": "Показать историю выполнения навыков",
"skill": "Фильтр по ID навыка",
"limit": "Максимальное количество результатов (по умолчанию: 50)",
"status": "Фильтр по статусу (running|completed|failed)"
},
"skillssh": {
"description": "Управление навыками, установленными через SSH"
},
"marketplace": {
"description": "Просмотр и установка навыков из маркетплейса"
},
"mp": {
"search": {
"description": "Поиск пакетов в маркетплейсе",
"category": "Фильтр по категории",
"tag": "Фильтр по тегу",
"limit": "Максимальное количество результатов (по умолчанию: 30)",
"sort": "Сортировка по: downloads|rating|recent"
},
"info": {
"description": "Показать сведения о пакете и файл readme"
},
"install": {
"description": "Установить пакет из маркетплейса",
"version": "Версия пакета (по умолчанию: latest)",
"enable": "Включить после установки",
"yes": "Пропустить запрос подтверждения"
},
"categories": {
"description": "Показать категории маркетплейса"
},
"featured": {
"description": "Показать рекомендуемые пакеты маркетплейса"
}
}
},
"memory": {
"description": "Управление памятью диалогов OmniRoute (FTS5 + vector)",
"search": {
"description": "Поиск записей в памяти по семантическому запросу",
"type": "Фильтр по типу памяти (user|feedback|project|reference)",
"limit": "Максимальное количество результатов (по умолчанию: 20)",
"api_key": "Фильтр по ключу API",
"token_budget": "Ограничить общее количество токенов в результатах"
},
"add": {
"description": "Добавить новую запись в память",
"content": "Текстовое содержимое записи в памяти",
"file": "Прочитать содержимое из файла",
"type": "Тип памяти (по умолчанию: user)",
"metadata": "Объект метаданных JSON",
"api_key": "Связать с ключом API"
},
"clear": {
"description": "Удалить записи из памяти, соответствующие фильтрам",
"type": "Фильтр по типу",
"older": "Удалить записи старше указанного срока (30d, 6m, 1y)",
"api_key": "Фильтр по ключу API",
"yes": "Пропустить запрос подтверждения"
},
"list": {
"description": "Показать записи в памяти без поискового ранжирования",
"type": "Фильтр по типу",
"limit": "Максимальное количество результатов (по умолчанию: 100)",
"api_key": "Фильтр по ключу API"
},
"get": {
"description": "Получить одну запись из памяти по ID"
},
"delete": {
"description": "Удалить запись из памяти по ID",
"yes": "Пропустить запрос подтверждения"
},
"health": {
"description": "Показать состояние подсистемы памяти (FTS5 + Qdrant)"
}
},
"oauth": {
"description": "Управлять подключениями OAuth-провайдеров",
"providers": {
"description": "Показать список провайдеров с поддержкой OAuth и типы их потоков"
},
"start": {
"description": "Запустить поток OAuth-авторизации для провайдера",
"provider": "Идентификатор провайдера (gemini, copilot, cursor, …)",
"no_browser": "Вывести только URL — не открывать браузер",
"import_system": "Автоматически импортировать учётные данные из локальной конфигурации системы",
"social": "Провайдер входа через социальную сеть (google|github) — обязателен для kiro",
"timeout": "Время ожидания авторизации в мс (по умолчанию: 300000)"
},
"status": {
"description": "Показать список активных OAuth-подключений",
"provider": "Фильтровать по идентификатору провайдера"
},
"revoke": {
"description": "Отозвать OAuth-подключение",
"provider": "Идентификатор провайдера, подключение которого нужно отозвать",
"connection_id": "Отозвать конкретное подключение по идентификатору",
"yes": "Пропустить запрос подтверждения"
}
},
"cloud": {
"description": "Управлять задачами облачных ИИ-агентов (codex, devin, jules)",
"agents": {
"description": "Показать список доступных облачных агентов"
},
"agent": {
"description": "Управлять задачами облачного агента {agent}",
"auth": {
"description": "Авторизовать {agent} через OAuth"
}
},
"task": {
"description": "Управлять задачами облачных агентов",
"create": {
"description": "Создать новую задачу агента",
"title": "Название задачи (по умолчанию — первые 80 символов запроса)",
"prompt": "Текст запроса задачи",
"prompt_file": "Прочитать запрос из файла",
"repo": "URL репозитория для клонирования в рамках задачи",
"branch": "Имя используемой ветки",
"metadata": "Объект метаданных JSON"
},
"list": {
"description": "Показать список задач агента",
"status": "Фильтровать по статусу (running|completed|failed|cancelled)",
"limit": "Максимальное количество результатов (по умолчанию: 50)"
},
"get": {
"description": "Получить сведения о задаче по идентификатору"
},
"status": {
"description": "Вывести статус задачи (running|completed|failed|cancelled)"
},
"cancel": {
"description": "Отменить выполняемую задачу",
"yes": "Пропустить запрос подтверждения"
},
"approve": {
"description": "Утвердить план агента для запуска выполнения"
},
"message": {
"description": "Отправить сообщение выполняемой задаче"
}
},
"sources": {
"description": "Показать список исходных файлов, созданных задачей"
}
},
"eval": {
"description": "Управлять наборами и запусками оценок",
"suites": {
"description": "Управлять наборами оценок",
"list": {
"description": "Список наборов оценивания"
},
"get": {
"description": "Получить сведения о наборе оценивания по ID"
},
"create": {
"description": "Создать набор оценивания из JSON-файла",
"file": "Путь к JSON-файлу с определением набора"
}
},
"run": {
"description": "Запустить оценивание для набора",
"model": "ID модели для оценивания (по умолчанию: auto)",
"combo": "Принудительно использовать конкретную комбинацию по имени",
"concurrency": "Количество параллельных примеров (по умолчанию: 4)",
"tag": "Добавить тег к этому запуску для последующей фильтрации",
"watch": "Отслеживать ход выполнения до завершения"
},
"list": {
"description": "Список запусков оценивания",
"suite": "Фильтровать по ID набора",
"status": "Фильтровать по статусу",
"since": "Вернуть запуски, выполненные после этой временной метки",
"limit": "Максимальное количество результатов (по умолчанию: 50)"
},
"get": {
"description": "Получить сведения о запуске оценивания по ID"
},
"results": {
"description": "Показать результаты примеров для запуска оценивания",
"failed": "Показать только неуспешные примеры"
},
"cancel": {
"description": "Отменить выполняющееся оценивание",
"yes": "Пропустить запрос подтверждения"
},
"scorecard": {
"description": "Показать сводную таблицу результатов завершённого оценивания"
}
},
"webhooks": {
"description": "Управление вебхуками OmniRoute",
"events": {
"description": "Показать все доступные типы событий вебхуков"
},
"list": {
"description": "Показать настроенные вебхуки"
},
"get": {
"description": "Получить сведения о вебхуке по ID"
},
"add": {
"description": "Зарегистрировать новый вебхук",
"url": "URL назначения",
"events": "Список типов событий через запятую",
"secret": "Секрет для подписи HMAC",
"header": "Дополнительный заголовок в формате key=value (можно указать несколько раз)",
"no_enabled": "Создать вебхук в отключённом состоянии"
},
"update": {
"description": "Обновить существующий вебхук",
"enabled": "Установить состояние активности (true|false)"
},
"remove": {
"description": "Удалить вебхук",
"yes": "Пропустить запрос подтверждения"
},
"test": {
"description": "Отправить тестовое событие вебхуку",
"event": "Тип имитируемого события (по умолчанию: request.completed)"
}
},
"program": {
"description": "OmniRoute — Умный AI-маршрутизатор с автоматическим переключением",
"version": "Вывести версию и выйти",
"output": "Формат вывода (table, json, jsonl, csv)",
"quiet": "Подавить несущественный вывод",
"no_color": "Отключить цветной вывод",
"timeout": "Таймаут HTTP-запросов в миллисекундах",
"api_key": "API-ключ для сервера OmniRoute",
"base_url": "Базовый URL сервера OmniRoute",
"context": "Контекст/профиль сервера для этой команды",
"lang": "Установить язык отображения CLI (переопределяет OMNIROUTE_LANG)"
},
"files": {
"description": "Управление файлами (загрузка, просмотр списка, получение, скачивание, удаление)",
"list": {
"purpose": "Фильтровать по назначению",
"limit": "Максимальное количество результатов"
},
"get": {
"description": "Получить метаданные файла"
},
"upload": {
"description": "Загрузить файл",
"purpose": "Назначение файла (batch, assistants, fine-tune)"
},
"content": {
"description": "Скачать содержимое файла",
"out": "Сохранить по указанному пути (по умолчанию: stdout)"
},
"delete": {
"yes": "Пропустить подтверждение"
}
},
"batches": {
"description": "Управление пакетными заданиями, совместимыми с OpenAI",
"list": {
"status": "Фильтр по статусу",
"limit": "Максимальное количество результатов"
},
"create": {
"description": "Создать пакетное задание",
"inputFile": "ID входного файла",
"endpoint": "Целевая конечная точка",
"window": "Окно выполнения",
"metadata": "Добавить метаданные key=value"
},
"submit": {
"description": "Загрузить файл JSONL и создать пакетное задание",
"jsonl": "Путь к файлу JSONL",
"endpoint": "Целевая конечная точка",
"wait": "Дождаться завершения"
},
"cancel": {
"yes": "Пропустить подтверждение"
},
"wait": {
"timeout": "Тайм-аут в мс"
},
"output": {
"out": "Сохранить результат по указанному пути"
},
"errors": {
"out": "Сохранить ошибки по указанному пути"
}
},
"translator": {
"description": "Преобразование тел запросов между форматами LLM",
"detect": {
"description": "Определить формат тела запроса"
},
"translate": {
"description": "Преобразовать тело запроса из одного формата в другой"
},
"send": {
"description": "Преобразовать и отправить вышестоящему сервису"
},
"stream": {
"description": "Потоковое преобразование тела запроса"
},
"from": "Исходный формат (openai|anthropic|gemini|cohere)",
"to": "Целевой формат (openai|anthropic|gemini|cohere)",
"file": "Путь к JSON-файлу с телом запроса",
"out": "Сохранить результат в файл",
"model": "Переопределить модель",
"history": {
"limit": "Максимальное количество результатов"
}
},
"pricing": {
"description": "Управление данными о ценах на модели",
"sync": {
"description": "Синхронизировать цены с вышестоящими источниками",
"provider": "Фильтр по провайдеру",
"force": "Принудительная повторная синхронизация"
},
"list": {
"provider": "Фильтр по провайдеру",
"model": "Фильтр по модели",
"limit": "Максимальное количество результатов"
},
"defaults": {
"description": "Управление ценами по умолчанию",
"input": "Стоимость входных токенов за 1 млн (USD)",
"output": "Стоимость выходных токенов за 1 млн (USD)",
"cacheRead": "Стоимость чтения из кэша за 1 млн токенов (USD)",
"cacheWrite": "Стоимость записи в кэш за 1 млн токенов (USD)"
},
"diff": {
"description": "Показывать расхождения с ценами вышестоящего источника",
"model": "Фильтр по модели"
}
},
"radar": {
"description": "Просмотр и синхронизация локальных каналов каталога Radar",
"status": "Показать локальные настройки Radar и состояние кэша каналов",
"sync": "Синхронизировать каталог, реферальные данные, предложения и Intel через локальный сервер"
},
"resilience": {
"description": "Просмотр и управление механизмами отказоустойчивости",
"status": {
"provider": "Фильтр по провайдеру"
},
"breakers": {
"provider": "Фильтр по провайдеру"
},
"cooldowns": {
"provider": "Фильтр по провайдеру",
"connectionId": "Фильтр по ID подключения"
},
"lockouts": {
"provider": "Фильтр по провайдеру",
"model": "Фильтр по модели"
},
"reset": {
"description": "Сбросить состояние предохранителя/периода ожидания",
"provider": "Провайдер для сброса",
"connectionId": "ID подключения для сброса",
"model": "Модель для сброса блокировки",
"allCooldowns": "Сбросить все периоды ожидания для провайдера",
"yes": "Пропустить подтверждение"
},
"profile": {
"description": "Управление профилем отказоустойчивости",
"name": "Название профиля"
},
"config": {
"description": "Управление конфигурацией отказоустойчивости",
"threshold": "Порог сбоев",
"resetTimeout": "Время ожидания перед сбросом в мс",
"baseCooldown": "Базовый период ожидания в мс"
}
},
"nodes": {
"description": "Управление узлами (конечными точками) провайдера",
"list": {
"provider": "Фильтр по провайдеру",
"enabled": "Показывать только включённые узлы"
},
"add": {
"provider": "Название провайдера",
"baseUrl": "Базовый URL узла",
"name": "Название узла",
"weight": "Вес балансировки нагрузки",
"region": "Тег региона",
"authHeader": "Пользовательский заголовок авторизации (key=value)"
},
"update": {
"baseUrl": "Новый базовый URL",
"name": "Новое название",
"weight": "Новый вес",
"region": "Новый регион",
"enabled": "Включить или отключить (true|false)"
},
"remove": {
"yes": "Пропустить подтверждение"
},
"validate": {
"baseUrl": "URL для проверки",
"provider": "Провайдер, с которым нужно сверить"
},
"test": {
"description": "Отправить тестовый запрос узлу"
},
"metrics": {
"description": "Показать метрики узла",
"period": "Период времени (например, 24h, 7d)"
}
},
"context": {
"description": "Настроить конвейер обработки контекста (Caveman, RTK)",
"analytics": {
"period": "Период времени (например, 7d, 30d)"
},
"caveman": {
"description": "Управление компрессором контекста Caveman",
"config": {
"description": "Показать или обновить конфигурацию Caveman",
"aggressiveness": "Интенсивность 0.01.0",
"maxShrinkPct": "Максимальный процент сокращения",
"preserveTags": "Теги для сохранения, разделённые запятыми"
}
},
"rtk": {
"description": "Управление оптимизатором контекста RTK",
"config": {
"description": "Показать или обновить конфигурацию RTK",
"tokenBudget": "Бюджет токенов для RTK",
"reservePct": "Процент резерва"
},
"filters": {
"description": "Управление фильтрами RTK",
"pattern": "Шаблон фильтра (регулярное выражение)",
"priority": "Приоритет фильтра (по умолчанию: 100)",
"action": "Действие фильтра: drop|shrink|replace",
"yes": "Пропустить подтверждение"
},
"test": {
"file": "Путь к JSON-файлу запроса"
}
},
"combos": {
"description": "Управление комбинациями с учётом контекста"
}
},
"sessions": {
"description": "Просмотр активных сеансов и управление ими",
"list": {
"user": "Фильтровать по пользователю",
"kind": "Фильтровать по типу (dashboard|api-key|mcp|a2a)",
"active": "Показывать только активные сеансы",
"limit": "Максимальное количество результатов (по умолчанию: 100)"
},
"expire": {
"yes": "Пропустить подтверждение"
},
"expireAll": {
"user": "Пользователь, чьи сеансы нужно завершить",
"yes": "Пропустить подтверждение"
}
},
"tags": {
"description": "Управление тегами ресурсов",
"add": {
"color": "Цвет тега (шестнадцатеричный код или название)",
"description": "Описание тега"
},
"remove": {
"yes": "Пропустить подтверждение"
},
"assign": {
"tag": "Название тега",
"to": "Целевой ресурс в формате type:id (например, provider:openai)"
},
"unassign": {
"tag": "Имя тега",
"from": "Исходный ресурс в формате type:id"
}
},
"openapi": {
"description": "Доступ к спецификации OmniRoute OpenAPI и её тестирование",
"dump": {
"description": "Вывести спецификацию OpenAPI в stdout или файл",
"format": "Формат вывода: yaml|json (по умолчанию: yaml)",
"out": "Сохранить по указанному пути к файлу"
},
"validate": {
"description": "Проверить спецификацию OpenAPI"
},
"try": {
"description": "Протестировать конечную точку API через спецификацию",
"method": "Метод HTTP (по умолчанию: GET)",
"body": "Путь к JSON-файлу с телом запроса",
"query": "Параметр запроса в формате key=value (можно указывать несколько раз)",
"header": "Заголовок в формате key=value (можно указывать несколько раз)"
},
"endpoints": {
"description": "Показать все конечные точки API",
"search": "Фильтровать по пути или описанию"
},
"paths": {
"description": "Показать все пути API"
}
},
"combo": {
"title": "Комбинации",
"switched": "Активная комбинация: {name}",
"created": "Комбинация создана: {name}",
"deleted": "Комбинация удалена: {name}",
"noCombos": "Комбинации не настроены.",
"confirmDelete": "Удалить комбинацию {name}?",
"suggest": {
"description": "Подобрать лучшую комбинацию для задачи с помощью оценки ИИ",
"task": "Описание задачи",
"maxCost": "Максимальная стоимость запроса в долларах США",
"maxLatencyMs": "Максимальная задержка в миллисекундах",
"weights": "Веса оценки в формате JSON, например {\"latency\":0.7,\"cost\":0.3}",
"top": "Количество лучших кандидатов для отображения (по умолчанию: 5)",
"explain": "Вывести обоснование в stderr",
"switch": "Активировать комбинацию с наивысшим рейтингом"
}
},
"oneproxy": {
"description": "Управление пулом вышестоящих прокси-серверов OneProxy",
"stats": {
"provider": "Фильтровать по провайдеру",
"period": "Период времени (по умолчанию: 24h)"
},
"fetch": {
"description": "Получить прокси-серверы из пула",
"count": "Количество прокси-серверов для получения (по умолчанию: 1)",
"type": "Тип прокси: http|socks5 (по умолчанию: http)"
},
"rotate": {
"description": "Принудительно сменить прокси",
"provider": "Провайдер, для которого нужно сменить прокси",
"connectionId": "Идентификатор конкретного подключения для смены прокси"
},
"config": {
"description": "Показать или обновить конфигурацию OneProxy",
"enabled": "Включить пул прокси (true|false)",
"poolSize": "Размер пула",
"providerSource": "URL провайдера прокси",
"rotationPolicy": "Политика ротации: sticky|per-request|periodic"
},
"pool": {
"description": "Показать текущий пул прокси с метриками"
}
},
"open": {
"description": "Открыть указанную страницу панели управления OmniRoute в браузере",
"url": "Только вывести URL, не открывая браузер"
},
"telemetry": {
"description": "Получить доступ к агрегированным данным телеметрии",
"summary": {
"description": "Показать сводку агрегированной телеметрии",
"period": "Период времени: 24h|7d|30d (по умолчанию: 24h)",
"compareTo": "Сравнить с предыдущим периодом"
},
"export": {
"description": "Экспортировать события телеметрии в JSONL",
"out": "Путь к выходному файлу (по умолчанию: telemetry.jsonl)",
"period": "Период времени для экспорта (по умолчанию: 7d)"
}
},
"sync": {
"description": "Синхронизировать конфигурацию между экземплярами OmniRoute",
"push": {
"description": "Отправить конфигурацию в облако или удалённый экземпляр",
"target": "Цель (cloud или context:name)",
"bundle": "Компоненты пакета для синхронизации",
"dryRun": "Предварительный просмотр без применения"
},
"pull": {
"description": "Получить конфигурацию из облака или удалённого экземпляра",
"source": "Источник (cloud или context:name)",
"merge": "Объединить с существующей конфигурацией",
"replace": "Заменить существующую конфигурацию",
"dryRun": "Предварительный просмотр без применения"
},
"diff": {
"source": "Исходный контекст",
"target": "Целевой контекст"
},
"bundle": {
"description": "Экспортировать конфигурацию в файл пакета",
"include": "Включаемые компоненты (через запятую)"
},
"import": {
"description": "Импортировать файл пакета",
"dryRun": "Проверить без применения"
},
"initialize": {
"fromCloud": "Инициализировать из облачной резервной копии"
},
"tokens": {
"description": "Управлять токенами синхронизации",
"create": {
"name": "Имя токена",
"scope": "Область действия токена",
"ttl": "Срок действия токена (например, 30d)"
},
"revoke": {
"yes": "Пропустить подтверждение"
}
},
"resolve": {
"description": "Разрешить конфликты синхронизации в интерактивном режиме"
}
},
"config": {
"contexts": {
"description": "Управлять контекстами/профилями сервера (add, use, list, show, remove, rename, export, import)"
},
"lang": {
"description": "Управлять языком интерфейса CLI",
"getDescription": "Показать код текущего активного языка",
"setDescription": "Установить язык интерфейса и сохранить его в конфигурации",
"listDescription": "Показать все доступные языки",
"listTitle": "Доступные языки",
"current": "Язык: {code} ({name})",
"saved": "Установлен язык {code} ({name}).",
"noCode": "Необходимо указать код языка. Выполните «omniroute config lang list», чтобы просмотреть доступные коды.",
"unknown": "Неизвестный код языка: {code}. Выполните «omniroute config lang list», чтобы просмотреть доступные коды.",
"alreadySet": "Язык уже установлен на {code}.",
"envHint": "Совет: вы также можете задать OMNIROUTE_LANG={code} в переменных окружения."
}
},
"completion": {
"description": "Создать или установить сценарии автодополнения для командной оболочки",
"zsh": "Вывести сценарий автодополнения для zsh",
"bash": "Вывести сценарий автодополнения для bash",
"fish": "Вывести сценарий автодополнения для fish",
"install": "Глобально установить сценарий автодополнения для обнаруженной командной оболочки",
"refresh": "Обновить кеш комбинаций, провайдеров и моделей"
},
"logs": {
"description": "Транслировать или экспортировать журналы запросов",
"follow": "Транслировать журналы в реальном времени",
"filter": "Фильтр по уровню (error,warn,info), значения разделяются запятыми",
"lines": "Количество строк для получения",
"timeout": "Время ожидания подключения в мс",
"baseUrl": "Базовый URL API OmniRoute",
"requestId": "Фильтр по идентификатору запроса",
"apiKey": "Фильтр по ключу API",
"combo": "Фильтр по названию комбинации",
"status": "Фильтр по коду состояния HTTP",
"durationMin": "Минимальная длительность запроса в мс",
"durationMax": "Максимальная длительность запроса в мс",
"export": "Сохранить журналы в файл (json/jsonl/csv)",
"exported": "Журналы сохранены в {path}",
"stopped": "Трансляция журналов остановлена.",
"streamError": "Ошибка трансляции журналов: {message}"
},
"tray": {
"description": "Управление значком в системном трее",
"show": "Показать значок в трее (если сервер запущен с параметром --tray)",
"hide": "Скрыть значок в трее",
"quit": "Завершить работу OmniRoute через трей"
},
"autostart": {
"description": "Управление автозапуском OmniRoute при загрузке системы (Linux: пользовательская служба systemd)",
"enable": "Включить автозапуск при загрузке системы",
"disable": "Отключить автозапуск при загрузке системы",
"toggle": "Переключить автозапуск при загрузке системы",
"status": "Показать состояние автозапуска"
},
"runtime": {
"description": "Управление нативными зависимостями среды выполнения",
"check": "Проверить состояние нативных зависимостей в каталоге среды выполнения",
"repair": "Переустановить нативные зависимости в каталоге среды выполнения",
"repair_force": "Принудительно переустановить, даже если зависимости исправны",
"clean": "Удалить каталог среды выполнения (освободить место на диске)",
"clean_yes": "Пропустить подтверждение"
},
"repl": {
"description": "Интерактивный многошаговый REPL с LLM",
"model": "Используемая модель (по умолчанию: auto)",
"combo": "Название используемой комбинации",
"system": "Системный промпт",
"resume": "Возобновить сохранённый сеанс по имени"
},
"plugin": {
"description": "Управление плагинами CLI (omniroute-cmd-*)",
"list": "Показать установленные плагины",
"install": "Установить плагин из npm или по локальному пути",
"remove": "Удалить установленный плагин",
"info": "Показать сведения об установленном плагине",
"search": "Найти доступные плагины в реестре npm",
"update": "Обновить установленные плагины",
"scaffold": "Создать шаблон нового плагина"
},
"launch": {
"description": "Запустить Claude Code с подключением к OmniRoute (локально или удалённо, с --profile)",
"token": "Токен, который должен отправлять клиент Claude (ANTHROPIC_AUTH_TOKEN)",
"notRunning": "OmniRoute недоступен на порте {port}. Запустите его командой 'omniroute serve'.",
"notFound": "CLI 'claude' не найден в PATH."
},
"run": {
"description": "Запустить поддерживаемый целевой CLI через OmniRoute"
},
"setupClaude": {
"description": "Создать профили Claude Code в ~/.claude/profiles на основе каталога моделей OmniRoute"
},
"connect": {
"description": "Подключиться к удалённому серверу OmniRoute и перейти в удалённый режим"
},
"tokens": {
"description": "Управление токенами доступа CLI с ограниченной областью действия (удалённый режим)"
},
"configure": {
"description": "Выбрать провайдера и модель на активном сервере и настроить поддерживаемый локальный CLI"
},
"launchCodex": {
"description": "Запустить Codex CLI с подключением к OmniRoute (локально или на удалённом VPS)"
},
"setupCodex": {
"description": "Создать файлы профилей в ~/.codex на основе актуального каталога моделей OmniRoute"
},
"packs": {
"description": "Управление дополнительными пакетами среды выполнения (ML / автоматизация браузера)",
"listDescription": "Показать дополнительные пакеты и состояние их установки",
"installDescription": "Установить дополнительный пакет в DATA_DIR",
"verifyDescription": "Проверить установленные пакеты по поставляемому индексу контрольных сумм",
"removeDescription": "Удалить установленный дополнительный пакет",
"sourceOpt": "Каталог, содержащий данные пакетов и индекс пакетов",
"warnNoIndex": "optional-packs.index.json не найден — установка и проверка недоступны в этой рабочей копии (он входит в поставку настольных сборок)",
"errUnknown": "неизвестный пакет: {name}",
"errNoIndex": "индекс пакетов не найден; укажите --source <dir>, содержащий данные пакета (в настольных сборках он поставляется рядом с приложением)",
"installed": "пакет \"{name}\" установлен и проверен в {dir}",
"restartHint": "перезапустите сервер OmniRoute (или настольное приложение), чтобы среда выполнения подхватила пакет",
"removed": "пакет «{name}» удалён",
"notInstalled": "пакет «{name}» не был установлен",
"verifyOk": "все установленные пакеты проверены",
"verifyFailed": "не удалось проверить пакеты: {count}",
"noneInstalled": "дополнительные пакеты не установлены"
}
}