@goodandready/dsh-russian-lang 0.2.15 → 0.2.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/docs/media/banner.jpg +0 -0
- package/lib/client.js +98 -5
- package/lib/index.js +14 -0
- package/lib/plugin-updater.js +333 -0
- package/package.json +2 -2
- package/ru-plugins/23-moa.json +172 -1
- package/ru-plugins/33-messenger-gateway.json +56 -1
- package/ru-plugins/35-gitea.json +89 -1
- package/ru-plugins/41-lanmode.json +160 -2
- package/ru-plugins/45-session-control.json +10 -1
- package/ru-plugins/49-usage-guard.json +33 -1
- package/ru-plugins/56-cron.json +13 -2
- package/ru-plugins/58-grok-xsearch.json +29 -26
- package/ru-plugins/60-model-sync.json +121 -0
- package/ru-plugins/61-issue-reporter.json +192 -0
- package/ru-plugins/62-model-search.json +22 -0
- package/ru-plugins/63-agent-orchestrator.json +10 -0
package/ru-plugins/35-gitea.json
CHANGED
|
@@ -81,6 +81,94 @@
|
|
|
81
81
|
"tokenEnvHint": "Имя учётных данных DSH, а не сам токен. По умолчанию GITEA_TOKEN.",
|
|
82
82
|
"tokenOff": "Токен не настроен",
|
|
83
83
|
"tokenOn": "Токен настроен",
|
|
84
|
-
"unsaved": "Не сохранено"
|
|
84
|
+
"unsaved": "Не сохранено",
|
|
85
|
+
"sectionInstance": "Подключение и основные настройки",
|
|
86
|
+
"sectionDefaults": "Значения по умолчанию и Git Worktrees",
|
|
87
|
+
"sectionWebhooks": "Вебхуки и уведомления",
|
|
88
|
+
"sectionScheduler": "Фоновый планировщик триажа",
|
|
89
|
+
"sectionInstances": "Дополнительные инстансы",
|
|
90
|
+
"toggleAdvanced": "Расширенные настройки",
|
|
91
|
+
"tabInspector": "Git Inspector",
|
|
92
|
+
"tabGraph": "Граф и CI",
|
|
93
|
+
"tabWebhooks": "Входящие вебхуки",
|
|
94
|
+
"tabScheduler": "Планировщик задач",
|
|
95
|
+
"inspector.title": "Инспектор Git и репозиториев",
|
|
96
|
+
"inspector.desc": "Просмотр активных веток, коммитов, worktree и незафиксированных изменений",
|
|
97
|
+
"inspector.refresh": "Обновить дерево Git",
|
|
98
|
+
"inspector.loading": "Считывание состояния репозитория…",
|
|
99
|
+
"inspector.empty": "Рабочие деревья и изменения не найдены",
|
|
100
|
+
"inspector.branch": "Текущая ветка: {name}",
|
|
101
|
+
"inspector.worktrees": "Активные Worktree ({count}):",
|
|
102
|
+
"inspector.unstaged": "Незафиксированные файлы ({count})",
|
|
103
|
+
"inspector.staged": "Файлы в индексе (Staged) ({count})",
|
|
104
|
+
"inspector.last_commit": "Последний коммит: {hash} — {msg}",
|
|
105
|
+
"inspector.clean_state": "Рабочее дерево чисто (Clean)",
|
|
106
|
+
"graph.title": "История коммитов и статус CI",
|
|
107
|
+
"graph.desc": "Визуальный граф веток, слияний и результатов автоматических тестов",
|
|
108
|
+
"graph.refresh": "Обновить граф",
|
|
109
|
+
"graph.ci_passing": "CI: Тесты пройдены",
|
|
110
|
+
"graph.ci_failing": "CI: Ошибки сборки",
|
|
111
|
+
"graph.ci_pending": "CI: Выполняется…",
|
|
112
|
+
"webhooks.title": "Входящие вебхуки Gitea",
|
|
113
|
+
"webhooks.desc": "Приём событий push, pull_request, issue с проверкой HMAC-SHA256 подписи",
|
|
114
|
+
"webhooks.endpoint": "URL вебхука: {url}",
|
|
115
|
+
"webhooks.secret": "Секретный ключ (HMAC Secret)",
|
|
116
|
+
"webhooks.secret_hint": "Секрет для верификации подписи X-Gitea-Signature",
|
|
117
|
+
"webhooks.recent": "Недавние события ({count})",
|
|
118
|
+
"webhooks.no_events": "События вебхуков ещё не поступали",
|
|
119
|
+
"scheduler.title": "Фоновый триаж и задачи по расписанию",
|
|
120
|
+
"scheduler.desc": "Автоматическая проверка новых задач (issues), напоминания DoD и ревью",
|
|
121
|
+
"scheduler.interval": "Интервал проверки (минуты)",
|
|
122
|
+
"scheduler.enabled": "Включить фоновый планировщик",
|
|
123
|
+
"scheduler.dod_reminder": "Напоминания Definition of Done (DoD)",
|
|
124
|
+
"scheduler.dod_hint": "Проверять чек-листы готовности перед закрытием PR и задач",
|
|
125
|
+
"scheduler.auto_triage": "Автоматический триаж новых Issue",
|
|
126
|
+
"scheduler.last_run": "Последний запуск: {time}",
|
|
127
|
+
"scheduler.next_run": "Следующий запуск: через {mins} мин",
|
|
128
|
+
"btn.trigger_triage": "Запустить триаж сейчас",
|
|
129
|
+
"btn.save_settings": "Сохранить параметры Gitea",
|
|
130
|
+
"msg.triage_started": "Фоновый триаж запущен",
|
|
131
|
+
"msg.saved": "Настройки Gitea успешно сохранены",
|
|
132
|
+
"defaultOwner": "Владелец / Организация по умолчанию",
|
|
133
|
+
"defaultOwnerHint": "Организация или пользователь в Gitea для создания репозиториев",
|
|
134
|
+
"defaultRepo": "Репозиторий по умолчанию",
|
|
135
|
+
"defaultRepoHint": "Основной репозиторий проекта",
|
|
136
|
+
"gitWrapper": "Пользовательский Git-враппер",
|
|
137
|
+
"gitWrapperHint": "Имя бинарника/скрипта-обёртки для Git (например, git-antigravity)",
|
|
138
|
+
"dodReminder": "Напоминания Definition of Done (DoD)",
|
|
139
|
+
"dodReminderHint": "Напоминать о критериях приёмки перед открытием или слиянием PR",
|
|
140
|
+
"forceHttpsUrls": "Принудительный HTTPS для URL репозиториев",
|
|
141
|
+
"forceHttpsUrlsHint": "Преобразовывать http:// ссылки в безопасный https://",
|
|
142
|
+
"timeoutMs": "Таймаут API запросов (мс)",
|
|
143
|
+
"timeoutMsHint": "Максимальное время ожидания ответа Gitea API",
|
|
144
|
+
"webhookSecretEnv": "Переменная окружения для HMAC-секрета",
|
|
145
|
+
"webhookSecretEnvHint": "Имя переменной с секретным ключом для валидации входящих вебхуков",
|
|
146
|
+
"notifyWebhook": "URL вебхука для уведомлений",
|
|
147
|
+
"notifyWebhookHint": "Внешний вебхук для отправки статусов триажа и событий",
|
|
148
|
+
"bgSchedulerEnabled": "Включить фоновый планировщик триажа",
|
|
149
|
+
"bgSchedulerEnabledHint": "Периодически проверять открытые задачи и пул-реквесты в фоне",
|
|
150
|
+
"bgSchedulerIntervalMin": "Интервал планировщика (минуты)",
|
|
151
|
+
"bgSchedulerIntervalMinHint": "Частота выполнения фонового триажа",
|
|
152
|
+
"bgSchedulerOwner": "Владелец для фонового триажа",
|
|
153
|
+
"bgSchedulerOwnerHint": "Пользователь или организация для фонового сканирования",
|
|
154
|
+
"bgSchedulerRepo": "Репозиторий для фонового триажа",
|
|
155
|
+
"bgSchedulerRepoHint": "Имя репозитория для фонового сканирования",
|
|
156
|
+
"bgSchedulerWebhook": "Вебхук для отчётов триажа",
|
|
157
|
+
"bgSchedulerWebhookHint": "URL для отправки дайджестов проверки задач",
|
|
158
|
+
"noInstances": "Дополнительные инстансы Gitea не настроены",
|
|
159
|
+
"drawerTitle": "Инспектор Git и Worktree",
|
|
160
|
+
"drawerClose": "Закрыть панель",
|
|
161
|
+
"drawerRefresh": "Обновить состояние Git",
|
|
162
|
+
"tabStatus": "Статус ветки и индекс",
|
|
163
|
+
"tabEvents": "Журнал событий",
|
|
164
|
+
"branch": "Текущая ветка:",
|
|
165
|
+
"upstream": "Ветка upstream:",
|
|
166
|
+
"statusClean": "Рабочее дерево чисто (Clean)",
|
|
167
|
+
"statusDirty": "Есть незафиксированные изменения",
|
|
168
|
+
"noChangesDesc": "Нет изменённых или неотслеживаемых файлов",
|
|
169
|
+
"activePr": "Активный Pull Request: #{number}",
|
|
170
|
+
"viewInGitea": "Открыть в Gitea ↗",
|
|
171
|
+
"recentEvents": "Недавние события репозитория",
|
|
172
|
+
"noEvents": "События не зафиксированы"
|
|
85
173
|
}
|
|
86
174
|
}
|
|
@@ -1,6 +1,164 @@
|
|
|
1
1
|
{
|
|
2
2
|
"dsh-lanmode": {
|
|
3
3
|
"sub": "mDNS (dsh.local), полифилы Web API, TLS для микрофона и PWA",
|
|
4
|
-
"title": "Локальный и мобильный доступ (dsh-lanmode)"
|
|
4
|
+
"title": "Локальный и мобильный доступ (dsh-lanmode)",
|
|
5
|
+
"quickConnect": "Быстрое подключение со смартфона или планшета",
|
|
6
|
+
"openQr": "Открыть QR-код",
|
|
7
|
+
"copyUrl": "Скопировать URL",
|
|
8
|
+
"copied": "Скопировано ✔",
|
|
9
|
+
"desktopMode": "Принудительный десктопный режим",
|
|
10
|
+
"desktopModeSub": "Отключает мобильную адаптацию и показывает полный десктопный UI",
|
|
11
|
+
"secNetwork": "Сетевые интерфейсы и привязка портов",
|
|
12
|
+
"secNetworkDesc": "Настройка локальных сетевых адаптеров, портов и режимов привязки",
|
|
13
|
+
"bindHostLabel": "Сетевой интерфейс для прослушивания (bindHost)",
|
|
14
|
+
"bindHostPh": "0.0.0.0 (все адаптеры), 192.168.1.x или 127.0.0.1",
|
|
15
|
+
"portLabel": "Порт веб-сервера (port)",
|
|
16
|
+
"portPh": "По умолчанию 3000 (оставьте пустым для авто)",
|
|
17
|
+
"modeLabel": "Режим локального доступа (mode)",
|
|
18
|
+
"modeAuto": "auto (автоопределение интерфейса)",
|
|
19
|
+
"modeLan": "lan (только локальная сеть)",
|
|
20
|
+
"modeLoopback": "loopback (только локальный компьютер)",
|
|
21
|
+
"secSecurity": "Безопасность и фильтрация IP",
|
|
22
|
+
"secSecurityDesc": "Разграничение прав по подсетям и контроль привилегированных действий",
|
|
23
|
+
"allowLabel": "Разрешённые подсети IP (allow)",
|
|
24
|
+
"allowPh": "192.168.1.0/24, 127.0.0.1 (пусто = разрешить всем)",
|
|
25
|
+
"adminAllowLabel": "Подсети с правами администратора (adminAllow)",
|
|
26
|
+
"adminAllowPh": "192.168.1.100, 10.0.0.0/24 (настройки и плагины)",
|
|
27
|
+
"guestAllowLabel": "Подсети с гостевым доступом (guestAllow)",
|
|
28
|
+
"guestAllowPh": "192.168.2.0/24 (только чат, настройки заблокированы)",
|
|
29
|
+
"unlockPrivilegedLabel": "Разрешить привилегированные вызовы (настройки, ключи) из LAN",
|
|
30
|
+
"secMobile": "Мобильный интерфейс, mDNS и PWA",
|
|
31
|
+
"secMobileDesc": "Локальное обнаружение, мобильные жесты и веб-приложение (PWA)",
|
|
32
|
+
"mdnsNameLabel": "Имя домена mDNS (mdnsName)",
|
|
33
|
+
"mdnsNamePh": "dsh.local (обязательно оканчивается на .local)",
|
|
34
|
+
"mdnsAnnounceLabel": "Анонсировать домен через mDNS (Zeroconf / Bonjour)",
|
|
35
|
+
"pwaLabel": "Внедрять манифест PWA и мобильные мета-теги viewport",
|
|
36
|
+
"mobileEnterLabel": "Клавиша Enter отправляет сообщение на сенсорной клавиатуре",
|
|
37
|
+
"diagnosticsLabel": "Включить эндпоинты диагностики (/dsh-lanmode/health, /probe)",
|
|
38
|
+
"secPolyfills": "Полифилы браузерных Web API (HTTP Shims)",
|
|
39
|
+
"secPolyfillsDesc": "Восстанавливает работу ограниченных API браузера на незащищённом HTTP",
|
|
40
|
+
"unblockSettingsLabel": "Разблокировать ограничение настроек для loopback",
|
|
41
|
+
"randomUuidLabel": "Полифил crypto.randomUUID для обычного HTTP",
|
|
42
|
+
"clipboardLabel": "Фолбэк navigator.clipboard.writeText для обычного HTTP",
|
|
43
|
+
"secAuth": "Аутентификация и защита входа",
|
|
44
|
+
"secAuthDesc": "Защита DSH логином и паролем для многопользовательских сетей",
|
|
45
|
+
"passwordAuthLabel": "Требовать обязательную авторизацию по логину и паролю",
|
|
46
|
+
"authUserLabel": "Имя пользователя администратора (authUser)",
|
|
47
|
+
"authSessionDaysLabel": "Срок действия сессии в днях (authSessionDays)",
|
|
48
|
+
"authPasswordLabel": "Пароль администратора (authPassword)",
|
|
49
|
+
"authPasswordPh": "Пароль для входа",
|
|
50
|
+
"authPasswordRefLabel": "Ссылка на секрет пароля (authPasswordRef)",
|
|
51
|
+
"authPasswordRefPh": "DSH_AUTH_PASSWORD или имя секрета в Credentials",
|
|
52
|
+
"secTunnel": "Удалённый доступ (Cloudflare Tunnel)",
|
|
53
|
+
"secTunnelDesc": "Безопасный доступ из интернета без белого IP и проброса портов",
|
|
54
|
+
"tunnelModeLabel": "Режим туннеля (tunnel)",
|
|
55
|
+
"tunnelOff": "off (выключен)",
|
|
56
|
+
"tunnelQuick": "quick (быстрый временный trycloudflare.com)",
|
|
57
|
+
"tunnelNamed": "named (постоянный туннель по токену)",
|
|
58
|
+
"tunnelTokenRefLabel": "Ссылка на токен туннеля (tunnelTokenRef)",
|
|
59
|
+
"tunnelTokenRefPh": "CF_TUNNEL_TOKEN или имя секрета в Credentials",
|
|
60
|
+
"tunnelPinLabel": "Требовать LAN PIN при входе через WAN-туннель Cloudflare",
|
|
61
|
+
"saveSettings": "Сохранить настройки LAN",
|
|
62
|
+
"saving": "Сохранение…",
|
|
63
|
+
"saveSuccess": "Настройки успешно сохранены ✔",
|
|
64
|
+
"saveError": "Ошибка сохранения настроек: ",
|
|
65
|
+
"logout": "Выйти из системы",
|
|
66
|
+
"logoutConfirm": "Вы уверены, что хотите выйти из DSH?",
|
|
67
|
+
"healthLink": "Открыть страницу диагностики (/dsh-lanmode/health) ↗",
|
|
68
|
+
"quickQrTitle": "📱 Вход с мобильного устройства",
|
|
69
|
+
"downloadProfile": "Профиль iOS (.mobileconfig)",
|
|
70
|
+
"downloadCa": "Корневой сертификат (.crt)",
|
|
71
|
+
"shareUrl": "Поделиться ↗",
|
|
72
|
+
"interfacesLabel": "Сетевой адаптер:",
|
|
73
|
+
"rttLabel": "Пинг",
|
|
74
|
+
"ms": "мс",
|
|
75
|
+
"activeMdns": "активен",
|
|
76
|
+
"phoneConnected": "📱 Готов к работе со смартфона",
|
|
77
|
+
"turnEndNotification": "Ассистент завершил ответ",
|
|
78
|
+
"approvalNotification": "Требуется подтверждение действия",
|
|
79
|
+
"toolPrefix": "Инструмент: ",
|
|
80
|
+
"retry": "Повторить",
|
|
81
|
+
"cardError": "⚠️ Ошибка карточки LanMode:",
|
|
82
|
+
"header.title": "Локальный доступ (LAN Mode)",
|
|
83
|
+
"header.sub": "Удобный доступ к DeepSeek Harness из локальной сети Wi-Fi/LAN с мобильных устройств",
|
|
84
|
+
"badge.active": "LAN активен ({ip})",
|
|
85
|
+
"badge.local_only": "Только localhost",
|
|
86
|
+
"section.qr": "Подключение по QR-коду",
|
|
87
|
+
"section.qr_desc": "Отсканируйте код камерой смартфона для мгновенного перехода в чат DSH",
|
|
88
|
+
"section.network": "Сетевые интерфейсы и адреса",
|
|
89
|
+
"section.network_desc": "Выберите сетевой адаптер для трансляции интерфейса в локальную сеть",
|
|
90
|
+
"section.security": "Безопасность и пароли доступа",
|
|
91
|
+
"section.security_desc": "Защита входа в LAN-режиме с помощью PIN-кода или токена сессии",
|
|
92
|
+
"field.bind_address": "Сетевой интерфейс (IP)",
|
|
93
|
+
"field.bind_address_hint": "IP-адрес в локальной сети (обычно 192.168.x.x или 10.x.x.x)",
|
|
94
|
+
"field.port": "Порт",
|
|
95
|
+
"field.port_hint": "Порт веб-сервера (по умолчанию 3000)",
|
|
96
|
+
"field.pin_auth": "Защита PIN-кодом",
|
|
97
|
+
"field.pin_auth_hint": "Требовать 4-значный PIN-код при первом входе с мобильного устройства",
|
|
98
|
+
"field.pin_code": "Установленный PIN-код",
|
|
99
|
+
"field.token_ttl": "Срок действия сессии (часы)",
|
|
100
|
+
"field.token_ttl_hint": "Время хранения авторизации на мобильном устройстве",
|
|
101
|
+
"field.https_proxy": "Использовать HTTPS / reverse proxy",
|
|
102
|
+
"field.https_proxy_hint": "Включите, если используете Nginx/Caddy с SSL-сертификатом",
|
|
103
|
+
"modal.qr_title": "Сканируйте для подключения",
|
|
104
|
+
"modal.qr_sub": "Убедитесь, что смартфон подключен к той же Wi-Fi сети",
|
|
105
|
+
"modal.url_label": "Адрес для браузера:",
|
|
106
|
+
"modal.close": "Закрыть",
|
|
107
|
+
"btn.save": "Сохранить настройки LAN",
|
|
108
|
+
"btn.regenerate_pin": "Сгенерировать новый PIN",
|
|
109
|
+
"btn.refresh_ips": "Обновить список IP",
|
|
110
|
+
"stat.connected_devices": "Подключено устройств",
|
|
111
|
+
"stat.last_device": "Последнее устройство",
|
|
112
|
+
"stat.traffic": "LAN трафик",
|
|
113
|
+
"msg.saved": "Параметры LAN-доступа сохранены",
|
|
114
|
+
"msg.pin_changed": "Новый PIN-код установлен: {pin}",
|
|
115
|
+
"status.listening": "Слушает на http://{ip}:{port}",
|
|
116
|
+
"status.stopped": "Остановлен",
|
|
117
|
+
"err.bind_failed": "Не удалось занять порт {port}: {error}",
|
|
118
|
+
"err.invalid_pin": "Неверный PIN-код",
|
|
119
|
+
"notifStatus": "Статус уведомлений в браузере:",
|
|
120
|
+
"notifEnable": "Включить уведомления",
|
|
121
|
+
"notifGranted": "Разрешены ✔",
|
|
122
|
+
"notifDenied": "Заблокированы пользователем",
|
|
123
|
+
"telemetryTitle": "Телеметрия локальной сети",
|
|
124
|
+
"telemetryRtt": "Сетевая задержка (RTT)",
|
|
125
|
+
"telemetryConns": "Активных WebSocket-соединений",
|
|
126
|
+
"telemetrySent": "Передано данных",
|
|
127
|
+
"telemetryRecv": "Принято данных",
|
|
128
|
+
"devicesTitle": "Подключённые устройства",
|
|
129
|
+
"devicesSub": "Список мобильных устройств и браузеров, авторизованных в LAN-режиме",
|
|
130
|
+
"devicesIp": "IP-адрес",
|
|
131
|
+
"devicesUa": "Устройство / Браузер",
|
|
132
|
+
"devicesLastSeen": "Последняя активность",
|
|
133
|
+
"devicesActions": "Действия",
|
|
134
|
+
"deviceCurrent": "Текущее устройство",
|
|
135
|
+
"deviceRevoke": "Отозвать доступ",
|
|
136
|
+
"deviceRevokeAllOthers": "Отозвать доступ всем остальным",
|
|
137
|
+
"deviceRevokeConfirm": "Вы уверены, что хотите отозвать доступ для этого устройства?",
|
|
138
|
+
"deviceRevokeAllConfirm": "Отозвать доступ всем мобильным устройствам, кроме текущего?",
|
|
139
|
+
"deviceNoDevices": "Подключённых мобильных устройств не обнаружено",
|
|
140
|
+
"secRouting": "Маршрутизация и проксирование",
|
|
141
|
+
"secRoutingDesc": "Параметры прямого доступа и проксирования запросов локальной сети",
|
|
142
|
+
"modeDirect": "direct (прямое подключение)",
|
|
143
|
+
"modeProxy": "proxy (через реверс-прокси Nginx/Caddy)",
|
|
144
|
+
"directPortLabel": "Порт прямого подключения",
|
|
145
|
+
"streamTimeoutLabel": "Таймаут стриминга ответов (сек)",
|
|
146
|
+
"streamTimeoutPh": "По умолчанию 120",
|
|
147
|
+
"privilegedExtraLabel": "Дополнительные доверенные IP",
|
|
148
|
+
"privilegedExtraPh": "192.168.1.50, 10.0.0.5",
|
|
149
|
+
"secTls": "Безопасное соединение (TLS / SSL)",
|
|
150
|
+
"secTlsDesc": "Шифрование трафика для работы аудио/видео и PWA на мобильных устройствах",
|
|
151
|
+
"tlsModeLabel": "Режим TLS",
|
|
152
|
+
"tlsSelfSigned": "self-signed (автоматический самоподписанный сертификат)",
|
|
153
|
+
"tlsFiles": "files (пользовательские файлы сертификата и ключа)",
|
|
154
|
+
"tlsOff": "off (обычный незашифрованный HTTP)",
|
|
155
|
+
"tlsHostsLabel": "Домены и IP в сертификате",
|
|
156
|
+
"tlsHostsPh": "dsh.local, 192.168.1.111",
|
|
157
|
+
"tlsCertLabel": "Путь к файлу сертификата (.crt)",
|
|
158
|
+
"tlsKeyLabel": "Путь к файлу закрытого ключа (.key)",
|
|
159
|
+
"secAccess": "Политика авторизации и LAN PIN",
|
|
160
|
+
"secAccessDesc": "Требование ввода PIN-кода для новых устройств в локальной сети",
|
|
161
|
+
"lanPinRefLabel": "Ссылка на секрет LAN PIN",
|
|
162
|
+
"lanPinRefPh": "LAN_PIN или имя секрета в Credentials"
|
|
5
163
|
}
|
|
6
|
-
}
|
|
164
|
+
}
|
|
@@ -108,6 +108,15 @@
|
|
|
108
108
|
"viewer.copy": "Копировать как Markdown",
|
|
109
109
|
"viewer.exportFailed": "Не удалось экспортировать: {message}",
|
|
110
110
|
"viewer.noClipboard": "буфер обмена недоступен в этом контексте браузера",
|
|
111
|
-
"viewer.save": "Сохранить .md"
|
|
111
|
+
"viewer.save": "Сохранить .md",
|
|
112
|
+
"bulk.archive": "В архив",
|
|
113
|
+
"bulk.export": "Экспорт Markdown",
|
|
114
|
+
"confirm.archiveBulk": "Архивировать {n} сессий навсегда? Восстановление невозможно.",
|
|
115
|
+
"jump.filterAll": "Все",
|
|
116
|
+
"jump.filterPinned": "Закреплённые",
|
|
117
|
+
"jump.filterTags": "Метки",
|
|
118
|
+
"jump.filterArchived": "Архив",
|
|
119
|
+
"row.turns": "{n} сообщений",
|
|
120
|
+
"menu.forkClean": "Новый диалог с этими настройками"
|
|
112
121
|
}
|
|
113
122
|
}
|
|
@@ -14,6 +14,38 @@
|
|
|
14
14
|
"sub": "Мониторинг аномального расхода токенов и защита от зацикливаний",
|
|
15
15
|
"title": "Контроль ресурсов (Usage Guard)",
|
|
16
16
|
"subtitle": "Очистка расхода токенов и защита от аварийного завершения сессий",
|
|
17
|
-
"unavailable": "Область настроек недоступна"
|
|
17
|
+
"unavailable": "Область настроек недоступна",
|
|
18
|
+
"header_desc": "Защищает историю сессий от повреждённых или отсутствующих счётчиков расхода токенов для всех LLM-провайдеров.",
|
|
19
|
+
"badge_active": "Активный контроль",
|
|
20
|
+
"badge_report_only": "Только отчёты",
|
|
21
|
+
"settings.loading": "Загрузка настроек Usage Guard…",
|
|
22
|
+
"settings.unavailable": "Настройки недоступны (хостовый сервис не готов).",
|
|
23
|
+
"settings.retry": "Повторить",
|
|
24
|
+
"maxStepTokens": "Лимит сглаживания всплесков токенов",
|
|
25
|
+
"maxStepTokensDesc": "Ограничивает аномально огромные единичные счётчики токенов шага (напр., > 1 000 000) перед вычислением проекций, исключая переполнение целых чисел и поломку истории сессий. 0 — отключить.",
|
|
26
|
+
"stats_title": "Статус защиты",
|
|
27
|
+
"stats_mode": "Текущий режим",
|
|
28
|
+
"stats_mode_repair": "Активное восстановление (Safe)",
|
|
29
|
+
"stats_mode_report": "Только аудит (Unsafe)",
|
|
30
|
+
"stats_scope": "Целевая область",
|
|
31
|
+
"stats_scope_val": "sessionProjections",
|
|
32
|
+
"telemetry_title": "Живая телеметрия",
|
|
33
|
+
"telemetry_rescued": "Спасённых событий",
|
|
34
|
+
"telemetry_tokens": "Исправлено токенов",
|
|
35
|
+
"telemetry_clamped": "Сглажено всплесков",
|
|
36
|
+
"telemetry_last_incident": "Последний инцидент",
|
|
37
|
+
"telemetry_no_incidents": "Инцидентов не зафиксировано (система в норме)",
|
|
38
|
+
"telemetry_refresh": "Обновить телеметрию",
|
|
39
|
+
"telemetry_refreshing": "Обновление…",
|
|
40
|
+
"updater_title": "Версия плагина и обновления",
|
|
41
|
+
"updater_current": "Текущая версия",
|
|
42
|
+
"updater_latest": "Последняя версия",
|
|
43
|
+
"updater_checking": "Проверка…",
|
|
44
|
+
"updater_check": "Проверить обновления",
|
|
45
|
+
"updater_updating": "Обновление…",
|
|
46
|
+
"updater_update_now": "Обновить до {version}",
|
|
47
|
+
"updater_up_to_date": "Установлена последняя версия",
|
|
48
|
+
"updater_failed": "Не удалось проверить обновления",
|
|
49
|
+
"updater_success": "Обновление успешно завершено. Перезагрузите страницу."
|
|
18
50
|
}
|
|
19
51
|
}
|
package/ru-plugins/56-cron.json
CHANGED
|
@@ -318,6 +318,17 @@
|
|
|
318
318
|
"history.applySuggestion": "Открыть форму редактирования с этой рекомендацией",
|
|
319
319
|
"form.inspectOnFailureLabel": "Диагностировать сбои с помощью модели",
|
|
320
320
|
"form.inspectOnFailureHint": "После сбоя модель анализирует промпт, ошибку и вывод, сохраняя диагноз и предлагаемые правки промпта вместе с запуском. Изменения не применяются автоматически.",
|
|
321
|
-
"settings.inspectorModelLabel": "Модель для диагностики сбоев"
|
|
321
|
+
"settings.inspectorModelLabel": "Модель для диагностики сбоев",
|
|
322
|
+
"form.agentPresetLabel": "Пресет агента",
|
|
323
|
+
"form.agentPresetPlaceholder": "standard (оставьте пустым для значения по умолчанию)",
|
|
324
|
+
"form.agentPresetHint": "Пресет агента из dsh-agent-presets (например: standard, minimal, cordis, ptc). Монтирует рабочее пространство и инструменты написания кода.",
|
|
325
|
+
"form.targetSessionIdLabel": "ID постоянной сессии (Target Session ID)",
|
|
326
|
+
"form.targetSessionIdPlaceholder": "например: audit-chat или dev-summary (пусто = изолированный запуск)",
|
|
327
|
+
"form.targetSessionIdHint": "Если указан, запланированные запуски возобновляют эту сессию для непрерывности контекста диалога вместо создания новой изолированной сессии.",
|
|
328
|
+
"form.targetSessionResetLabel": "Ротация контекста сессии",
|
|
329
|
+
"form.targetSessionResetNever": "Непрерывно (без ротации)",
|
|
330
|
+
"form.targetSessionResetDaily": "Ежедневная ротация (новая сессия каждый день)",
|
|
331
|
+
"form.targetSessionResetWeekly": "Еженедельная ротация (новая сессия каждую неделю)",
|
|
332
|
+
"form.targetSessionResetHint": "Автоматически меняет идентификатор сессии, предотвращая разрастание контекстного окна при долгосрочной работе."
|
|
322
333
|
}
|
|
323
|
-
}
|
|
334
|
+
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"api_key": "Ключ API xAI",
|
|
6
6
|
"api_key_placeholder": "xai-...",
|
|
7
7
|
"api_key_hint": "Ключ API xAI. Если поле пустое, используется переменная окружения XAI_API_KEY.",
|
|
8
|
-
"model": "Модель
|
|
8
|
+
"model": "Модель",
|
|
9
9
|
"model_hint": "Модель xAI для обобщения и синтеза поисковой выдачи.",
|
|
10
10
|
"max_results": "Макс. результатов поиска",
|
|
11
11
|
"max_results_hint": "Максимальное количество твитов или постов, возвращаемых за один поисковый запрос (1–50).",
|
|
@@ -43,35 +43,38 @@
|
|
|
43
43
|
"base_url_hint": "Конечная точка xAI API (по умолчанию: https://api.x.ai/v1).",
|
|
44
44
|
"redirect_uri": "URL перенаправления OAuth",
|
|
45
45
|
"redirect_uri_hint": "Локальный URL обратного вызова OAuth (по умолчанию: http://127.0.0.1:56121/callback).",
|
|
46
|
-
"sec_auth_title": "🔑
|
|
46
|
+
"sec_auth_title": "🔑 Авторизация и доступ к SuperGrok",
|
|
47
47
|
"sec_auth_desc": "Токен подключения OAuth безопасно хранится в службе Credentials DSH и обновляется автоматически.",
|
|
48
48
|
"sec_model_title": "🧠 Настройка модели и отказоустойчивости",
|
|
49
49
|
"sec_model_desc": "Выбор модели xAI для синтеза поисковой выдачи и автоматический переход на резервную при лимитах.",
|
|
50
50
|
"sec_cache_title": "⚡ Производительность и кэш запросов",
|
|
51
51
|
"sec_cache_desc": "Кэш запросов LRU в оперативной памяти исключает дублирующие вызовы API и ускоряет повторные поиски.",
|
|
52
52
|
"title": "Grok X Search & Intelligence Suite",
|
|
53
|
-
"subtitle": "
|
|
54
|
-
"ready_msg": "
|
|
55
|
-
"not_connected_msg": "
|
|
56
|
-
"connected": "
|
|
57
|
-
"not_connected": "
|
|
58
|
-
"connect": "
|
|
59
|
-
"reconnect": "
|
|
60
|
-
"disconnect": "
|
|
61
|
-
"saving": "
|
|
62
|
-
"auto_fallback": "
|
|
63
|
-
"enable_cache": "
|
|
64
|
-
"cache_stats": "
|
|
65
|
-
"clear_cache": "
|
|
66
|
-
"cache_cleared": "
|
|
67
|
-
"browser_no_return": "
|
|
68
|
-
"paste_hint": "
|
|
69
|
-
"submit": "
|
|
70
|
-
"cancel": "
|
|
71
|
-
"supergrok_account": "SuperGrok
|
|
72
|
-
"grok_client_id": "Grok Client ID",
|
|
73
|
-
"client_id_hint": "OAuth Client ID
|
|
74
|
-
"loading": "
|
|
75
|
-
"enabled_plugin": "
|
|
53
|
+
"subtitle": "Поиск в реальном времени, профили авторов, тренды и фактчекинг в X (Twitter) через SuperGrok OAuth.",
|
|
54
|
+
"ready_msg": "Инструменты x_search, x_author_profile, x_trending_topics, x_fact_check_notes, x_thread_reader и x_find_experts готовы к работе в чате.",
|
|
55
|
+
"not_connected_msg": "Подключите учётную запись SuperGrok для активации инструментов аналитики X.",
|
|
56
|
+
"connected": "Подключено",
|
|
57
|
+
"not_connected": "Не подключено",
|
|
58
|
+
"connect": "Подключить",
|
|
59
|
+
"reconnect": "Переподключить",
|
|
60
|
+
"disconnect": "Отключить",
|
|
61
|
+
"saving": "Сохранение…",
|
|
62
|
+
"auto_fallback": "Автопереключение на Grok 4.5 при лимитах (429)",
|
|
63
|
+
"enable_cache": "Кэширование повторных запросов в памяти (5 мин)",
|
|
64
|
+
"cache_stats": "Запросов в кэше",
|
|
65
|
+
"clear_cache": "Очистить кэш",
|
|
66
|
+
"cache_cleared": "Кэш очищен",
|
|
67
|
+
"browser_no_return": "Браузер не вернулся автоматически? Вставьте URL перенаправления",
|
|
68
|
+
"paste_hint": "Вставьте полный URL из адресной строки браузера после авторизации.",
|
|
69
|
+
"submit": "Отправить",
|
|
70
|
+
"cancel": "Отмена",
|
|
71
|
+
"supergrok_account": "Учётная запись SuperGrok",
|
|
72
|
+
"grok_client_id": "ID клиента Grok (OAuth Client ID)",
|
|
73
|
+
"client_id_hint": "OAuth Client ID из портала разработчиков SuperGrok / xAI.",
|
|
74
|
+
"loading": "Загрузка…",
|
|
75
|
+
"enabled_plugin": "Включить плагин Grok X Search",
|
|
76
|
+
"cache_hits": "Попаданий",
|
|
77
|
+
"cache_misses": "Промахов",
|
|
78
|
+
"cache_hit_rate": "Эффективность кэша"
|
|
76
79
|
}
|
|
77
|
-
}
|
|
80
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
{
|
|
2
|
+
"dsh-model-sync": {
|
|
3
|
+
"title": "Синхронизация моделей",
|
|
4
|
+
"showSettings": "Показать настройки",
|
|
5
|
+
"desc": "Обновление каталогов моделей провайдеров по API-ключам. По умолчанию включён безопасный предпросмотр (dry-run); применение изменений выполняется явно.",
|
|
6
|
+
"loading": "Загрузка…",
|
|
7
|
+
"refresh": "Обновить статус",
|
|
8
|
+
"refreshAll": "Обновить всё",
|
|
9
|
+
"run": "Найти модели",
|
|
10
|
+
"apply": "Применить изменения",
|
|
11
|
+
"dryRun": "Только предпросмотр (dry-run)",
|
|
12
|
+
"all": "Все провайдеры с API-ключами",
|
|
13
|
+
"ok": "готов",
|
|
14
|
+
"dormant": "не настроен",
|
|
15
|
+
"running": "синхронизация…",
|
|
16
|
+
"noProviders": "Провайдеры с API-ключами не найдены.",
|
|
17
|
+
"lastRun": "Последний запуск",
|
|
18
|
+
"previewTitle": "Предпросмотр изменений",
|
|
19
|
+
"previewNone": "Изменений не обнаружено.",
|
|
20
|
+
"previewAdded": "Добавлено",
|
|
21
|
+
"previewRemoved": "Удалено",
|
|
22
|
+
"previewChanged": "Изменено",
|
|
23
|
+
"previewApply": "Применить изменения",
|
|
24
|
+
"previewDismiss": "Закрыть предпросмотр",
|
|
25
|
+
"selectModels": "Выбор моделей",
|
|
26
|
+
"saveSelection": "Сохранить и применить выбор",
|
|
27
|
+
"selectAtLeastOne": "Выберите хотя бы одну модель или используйте вариант «Все модели».",
|
|
28
|
+
"cancel": "Отмена",
|
|
29
|
+
"selected": "выбрано",
|
|
30
|
+
"allModels": "Все модели",
|
|
31
|
+
"noModels": "В текущем каталоге нет моделей.",
|
|
32
|
+
"capabilityFilter": "Фильтр по возможностям",
|
|
33
|
+
"capabilityCount": "показано",
|
|
34
|
+
"noCapabilities": "В этом каталоге нет метаданных о возможностях.",
|
|
35
|
+
"pickerNote": "Выбранные модели сразу станут доступны в переключателе моделей DSH.",
|
|
36
|
+
"health": "Проверить доступность",
|
|
37
|
+
"healthOk": "доступна",
|
|
38
|
+
"healthError": "недоступна",
|
|
39
|
+
"healthDormant": "не настроен",
|
|
40
|
+
"policy": "Ручной отбор моделей",
|
|
41
|
+
"savePolicy": "Сохранить политику",
|
|
42
|
+
"policyInclude": "Правила включения (по одному regex в строке)",
|
|
43
|
+
"policyExclude": "Правила исключения (по одному regex в строке)",
|
|
44
|
+
"policyRequire": "Обязательные возможности (через запятую)",
|
|
45
|
+
"policyDeny": "Запрещённые возможности (через запятую)",
|
|
46
|
+
"policyNote": "Шаблоны сопоставляются с ID, именем и тегами моделей. Нажмите «Применить изменения», чтобы обновить список в DSH.",
|
|
47
|
+
"scheduler": "Планировщик",
|
|
48
|
+
"nextRun": "следующий запуск",
|
|
49
|
+
"schedulerOff": "выключен",
|
|
50
|
+
"schedulerOn": "включён",
|
|
51
|
+
"removeMissing": "Подтвердить удаление устаревших",
|
|
52
|
+
"stale": "устарела",
|
|
53
|
+
"deprecated": "deprecated",
|
|
54
|
+
"history": "История синхронизаций",
|
|
55
|
+
"historyRun": "Запуск",
|
|
56
|
+
"diffAdded": "добавлено",
|
|
57
|
+
"diffRemoved": "удалено",
|
|
58
|
+
"diffRenamed": "переименовано",
|
|
59
|
+
"diffChanged": "изменена метаинформация",
|
|
60
|
+
"rollback": "Откатить каталог",
|
|
61
|
+
"rollbackConfirm": "Откатить каталог этого провайдера к выбранному снимку?",
|
|
62
|
+
"credentials": "Диагностика ключей",
|
|
63
|
+
"checkCredentials": "Проверить ключи",
|
|
64
|
+
"missingCredential": "не настроен",
|
|
65
|
+
"credentialReady": "настроен",
|
|
66
|
+
"report": "Итог запуска",
|
|
67
|
+
"success": "успех",
|
|
68
|
+
"partial": "частичный успех",
|
|
69
|
+
"failure": "ошибка",
|
|
70
|
+
"empty": "нет настроенных провайдеров",
|
|
71
|
+
"notifications": "Уведомления",
|
|
72
|
+
"markRead": "Прочитано",
|
|
73
|
+
"acknowledge": "Подтвердить",
|
|
74
|
+
"noNotifications": "Новых уведомлений нет.",
|
|
75
|
+
"selectAllFiltered": "Выбрать все показанные",
|
|
76
|
+
"deselectAllFiltered": "Снять выбор с показанных",
|
|
77
|
+
"invertFiltered": "Инвертировать выбор",
|
|
78
|
+
"filterContext100k": "Контекст ≥ 100k",
|
|
79
|
+
"filterCheap": "Экономные ≤ $1/1M",
|
|
80
|
+
"showMore": "Показать ещё (%d)",
|
|
81
|
+
"showingCount": "Показано %d из %d моделей",
|
|
82
|
+
"deprecatesIn": "Устареет через %d дн.",
|
|
83
|
+
"cacheHoursAgo": "кэш %d ч назад",
|
|
84
|
+
"noHistory": "Истории синхронизаций нет.",
|
|
85
|
+
"searchPlaceholder": "Поиск по ID / имени / тегу",
|
|
86
|
+
"sortName": "Имя А→Я",
|
|
87
|
+
"sortPrice": "Цена ↑",
|
|
88
|
+
"sortContext": "Контекст ↓",
|
|
89
|
+
"sortDate": "Новые ↓",
|
|
90
|
+
"schedulerSettings": "Настройка планировщика",
|
|
91
|
+
"scheduleEnabled": "Включить фоновое расписание",
|
|
92
|
+
"intervalMinutes": "Интервал (в минутах)",
|
|
93
|
+
"autoApplySchedule": "Автоматически применять изменения",
|
|
94
|
+
"saveScheduler": "Сохранить расписание",
|
|
95
|
+
"schedulerSaved": "Сохранено",
|
|
96
|
+
"scopeUnavailable": "Служба настроек недоступна.",
|
|
97
|
+
"invalidPattern": "Некорректный regex-шаблон: %s",
|
|
98
|
+
"batchTry": "Проверить выбранные модели",
|
|
99
|
+
"batchTryRunning": "Проверка…",
|
|
100
|
+
"batchTryDeselectUnreachable": "Снять выбор с недоступных",
|
|
101
|
+
"batchTryResults": "Пакетная проверка: доступно %d из %d",
|
|
102
|
+
"filterCostContext": "Ограничения по цене и контексту",
|
|
103
|
+
"enableCostFilter": "Фильтровать по максимальной цене",
|
|
104
|
+
"maxPricePerMillion": "Макс. цена ($ / 1 млн токенов)",
|
|
105
|
+
"enableContextFilter": "Фильтровать по минимальному контексту",
|
|
106
|
+
"minContextTokens": "Мин. размер контекста (токенов)",
|
|
107
|
+
"exportConfig": "Экспорт настроек",
|
|
108
|
+
"importConfig": "Импорт настроек",
|
|
109
|
+
"exportImportTitle": "Резервное копирование и восстановление настроек",
|
|
110
|
+
"importSuccess": "Конфигурация успешно импортирована",
|
|
111
|
+
"importError": "Ошибка импорта: %s",
|
|
112
|
+
"importPlaceholder": "Вставьте JSON-конфигурацию сюда…",
|
|
113
|
+
"modelAliases": "Алиасы моделей",
|
|
114
|
+
"aliasPlaceholder": "Алиас (например, gpt-4o-latest)",
|
|
115
|
+
"targetModel": "Целевая модель",
|
|
116
|
+
"addAlias": "Сохранить алиас",
|
|
117
|
+
"removeAlias": "Удалить алиас",
|
|
118
|
+
"noAliases": "Алиасы моделей не заданы.",
|
|
119
|
+
"targetProvider": "Провайдер"
|
|
120
|
+
}
|
|
121
|
+
}
|