@goodandready/dsh-russian-lang 0.2.17 → 0.2.19

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/lib/index.js CHANGED
@@ -52,15 +52,21 @@ export function apply(ctx) {
52
52
  })
53
53
 
54
54
  // One-click plugin updater per DSH standard
55
- const host = ctx
56
- if (typeof host.webServer?.register === 'function') {
57
- const mount = () => registerPluginUpdater(ctx, {
58
- endpoint: '/api/dsh-russian-lang/update',
59
- packageName: '@goodandready/dsh-russian-lang',
60
- manifestUrl: new URL('../package.json', import.meta.url),
55
+ if (typeof ctx.inject === 'function') {
56
+ ctx.inject(['webServer'], (wctx) => {
57
+ try {
58
+ const mount = () => registerPluginUpdater(wctx, {
59
+ endpoint: '/api/dsh-russian-lang/update',
60
+ packageName: '@goodandready/dsh-russian-lang',
61
+ manifestUrl: new URL('../package.json', import.meta.url),
62
+ })
63
+ if (typeof wctx.effect === 'function') wctx.effect(mount, 'russian-lang: plugin updater')
64
+ else mount()
65
+ } catch (err) {
66
+ if (typeof wctx.logger?.warn === 'function') {
67
+ wctx.logger.warn('Failed to mount plugin updater route:', err)
68
+ }
69
+ }
61
70
  })
62
- if (typeof ctx.effect === 'function') ctx.effect(mount, 'russian-lang: plugin updater')
63
- else mount()
64
71
  }
65
-
66
72
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@goodandready/dsh-russian-lang",
3
- "version": "0.2.17",
4
- "description": "Russian localization for DeepSeek Harness (DSH v0.1.5-rc.2+) web UI: adds Русский as the native language option in Settings - General - Language. 100.0% coverage across 7,149 keys (1,225 core UI keys + 5,924 keys across 45+ ecosystem plugins) with zero machine drafts. Features unified dsh-clinebot visual design standard for Settings Card, official One-click plugin updater (/api/dsh-russian-lang/update), full translations for updated ecosystem plugins (dsh-lanmode, dsh-moa, dsh-gitea, dsh-issue-reporter, dsh-messenger-gateway, dsh-usage-guard, dsh-cron, dsh-model-search, dsh-agent-orchestrator, dsh-model-sync, Live Canvas, dsh-goal, Skills Manager, Shadow Auditor, Kanban Epics, Key Rotation, Remote Workspace, Cost Meter, Vision Bridge, Time Machine), Smart Russian UX (localized Markdown export, turn translation, live typography, slash command aliases, Alt+L layout fix), expanded error humanizer (POSIX, HTTP 4xx/5xx), and runtime snapshot extension without modifying core files.",
3
+ "version": "0.2.19",
4
+ "description": "Russian localization for DeepSeek Harness (DSH v0.1.6-alpha.1+) web UI: adds Русский as native language option. 100.0% coverage across 11,295 keys (127 namespaces). Features full DSH v0.1.6-alpha.1 core support (terminal, archive, command palette, Auto review, trajectory, PTC/Creator presets) and complete GoodAndReady plugin catalog (subscriptions, tts, image-gen, voice, key-limits, notify, commandcode, plugin-console).",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
7
7
  "exports": {
@@ -68,4 +68,4 @@
68
68
  "bugs": {
69
69
  "url": "https://github.com/GooDAnDReaDY/dsh-russian-lang/issues"
70
70
  }
71
- }
71
+ }
@@ -150,7 +150,21 @@
150
150
  "description.goal": "Установить или просмотреть цель для длительной задачи",
151
151
  "description.permission": "Переключить пресет разрешений (режим песочницы и политики подтверждений)",
152
152
  "description.plan": "Войти или выйти из режима планирования",
153
- "notice.attachmentsUnsupported": "/{command} не принимает вложения; сначала удалите их"
153
+ "notice.attachmentsUnsupported": "/{command} не принимает вложения; сначала удалите их",
154
+ "section.add": "Добавить",
155
+ "section.commands": "Команды",
156
+ "label.goal": "Цель",
157
+ "label.plan": "План",
158
+ "label.feedback": "Обратная связь",
159
+ "label.compact": "Сжатие",
160
+ "label.permission": "Режим доступа",
161
+ "label.export": "Экспорт",
162
+ "token.goal": "цель",
163
+ "token.plan": "план",
164
+ "token.feedback": "отзыв",
165
+ "token.compact": "сжатие",
166
+ "token.permission": "доступ",
167
+ "token.export": "экспорт"
154
168
  },
155
169
  "session-log-download": {
156
170
  "dialog.close": "Закрыть",
@@ -177,12 +191,22 @@
177
191
  "model": {
178
192
  "trigger.loading": "Загрузка моделей…",
179
193
  "option.deepseekV4Flash.description": "Быстрая, эффективная и экономичная; подходит для типовых, повседневных или параллельных задач.",
180
- "option.deepseekV4Pro.description": "Улучшенное агентное написание кода, глубокие знания и сложное мышление; подходит для комплексных задач с высокими требованиями к качеству при более высокой стоимости."
194
+ "option.deepseekV4Pro.description": "Улучшенное агентное написание кода, глубокие знания и сложное мышление; подходит для комплексных задач с высокими требованиями к качеству при более высокой стоимости.",
195
+ "command.label": "Модель"
181
196
  },
182
197
  "permission.access": {
183
198
  "preset.fullAccess": "Полный доступ",
184
199
  "preset.readOnly": "Только чтение",
185
- "preset.workspaceWrite": "Запись в рабочую область"
200
+ "preset.workspaceWrite": "Запись в рабочую область",
201
+ "mode": "Режим доступа, текущий: {name}",
202
+ "close": "Закрыть",
203
+ "auto.label": "Автопроверка",
204
+ "auto.badge": "ЭКСП",
205
+ "auto.description": "Запуск без песочницы с экспериментальной проверкой каждого вызова инструментов и внутренних вызовов PTC той же моделью.",
206
+ "auto.confirm.title": "Включить автопроверку (экспериментально)?",
207
+ "auto.confirm.description": "Автопроверка работает без песочницы. Перед каждым вызовом нативного инструмента и внутренним вызовом PTC та же модель, что и текущий агент, проверяет, разрешить ли его. Эта функция экспериментальная, может ошибочно разрешать или блокировать действия и расходует дополнительные токены.",
208
+ "auto.confirm.acknowledge": "Я понимаю эти риски и хочу продолжить",
209
+ "auto.confirm.enable": "Включить автопроверку"
186
210
  },
187
211
  "reference": {
188
212
  "crumb.root": "Рабочая область",
@@ -260,7 +260,11 @@
260
260
  "input.send.steer": "Направить сообщение",
261
261
  "queue.file": "Файл в очереди: {name}",
262
262
  "queue.sending": "Отправка…",
263
- "tool.title.readImage": "Просмотр изображения"
263
+ "tool.title.readImage": "Просмотр изображения",
264
+ "input.file": "Файл",
265
+ "tool.autoReviewRejected": "Отклонено автопроверкой",
266
+ "tool.autoReviewNotExecuted": "Инструмент не был выполнен. Причина: {reason}",
267
+ "tool.autoReviewReasonFallback": "Автопроверка не разрешила это действие"
264
268
  },
265
269
  "chat": {
266
270
  "chat.deepDiving": "Глубокий анализ…",
@@ -379,7 +383,8 @@
379
383
  "stats.dialog.title": "Статистика сессии",
380
384
  "stats.dialog.toolTime": "Время инструментов",
381
385
  "stats.dialog.ttft": "Среднее время до первого токена (TTFT)",
382
- "stats.dialog.usageTitle": "Использование токенов"
386
+ "stats.dialog.usageTitle": "Использование токенов",
387
+ "duration.hours": "{hours} ч {minutes} мин {seconds} с"
383
388
  },
384
389
  "trajectory": {
385
390
  "block.label": "Блок #{index} {type}",
@@ -823,7 +828,14 @@
823
828
  "usage.thisRequest": "This request",
824
829
  "usage.tokens": "Токены",
825
830
  "view.trajectory": "Trajectory",
826
- "layout.fileAttachments": "Файлы ×{count}"
831
+ "layout.fileAttachments": "Файлы ×{count}",
832
+ "code.copyOutput": "Скопировать вывод",
833
+ "code.copySource": "Скопировать код",
834
+ "code.originalJson": "Оригинальный JSON",
835
+ "code.output": "Вывод",
836
+ "code.running": "Выполняется…",
837
+ "code.source": "Код",
838
+ "record.wrapLines": "Переносить строки"
827
839
  },
828
840
  "slash.menu": {
829
841
  "crumbs.aria": "Навигация по папкам",
@@ -831,4 +843,4 @@
831
843
  "drill.hint": "Открыть папку",
832
844
  "drill.key": "Tab"
833
845
  }
834
- }
846
+ }
@@ -99,7 +99,10 @@
99
99
  "welcomeBody": "DeepSeek Harness 0.1 находится на стадии тестирования для разработчиков Harness. Многие компоненты требуют дальнейшего улучшения, и мы приветствуем обратную связь от сообщества. Базовые плагины и системные API DeepSeek Harness продолжат активно развиваться в ближайшие месяцы.\n\nМы с нетерпением ждём возможности исследовать границы искусственного интеллекта вместе с разработчиками по всему миру на базе открытой, модульной и повторно используемой инфраструктуры. Приглашаем разработчиков присоединиться к экосистеме плагинов DSH.",
100
100
  "welcomeContinue": "Продолжить",
101
101
  "welcomeTitle": "Уведомление о внутреннем тестировании",
102
- "customBaseUrlInvalid": "Введите корректный URL (HTTP или HTTPS)."
102
+ "customBaseUrlInvalid": "Введите корректный URL (HTTP или HTTPS).",
103
+ "deepSeekChatBaseUrl": "https://api.deepseek.com",
104
+ "deepSeekMessagesBaseUrl": "https://api.deepseek.com/anthropic",
105
+ "deepSeekEndpointHint": "Используйте эндпоинт, совместимый с настроенным подключением."
103
106
  },
104
107
  "workspace": {
105
108
  "actions.newSession.aria": "Новая сессия в {name}",
@@ -55,7 +55,13 @@
55
55
  "view": "Посмотреть",
56
56
  "presetPtcDescription": "Полноценный агент разработки без инструмента рабочих процессов; остальные инструменты доступны через SDK режима PTC, что позволяет модели объединять многоэтапные операции в одну программу TypeScript.",
57
57
  "presetPtcName": "Режим PTC",
58
- "switchRefused": "Не удалось переключиться на {name}: {reason}"
58
+ "switchRefused": "Не удалось переключиться на {name}: {reason}",
59
+ "selectionOffDefault": "По умолчанию",
60
+ "showPicker": "Разрешить выбор режимов агента",
61
+ "showPickerBeta": "Бета",
62
+ "showPickerDescription": "Если включено, для новых задач можно выбирать режимы: Стандартный, PTC, Creator, Минимальный и пользовательские. Если выключено, все новые задачи используют режим по умолчанию (по умолчанию Стандартный; настраивается). Влияет только на новые задачи.",
63
+ "enablePickerToSetDefault": "Включите выбор режимов агента, чтобы задать режим по умолчанию",
64
+ "enablePickerToCreate": "Включите выбор режимов агента, чтобы запустить режим Creator"
59
65
  },
60
66
  "cordis": {
61
67
  "a11y.defining": "Определение плагина",
@@ -133,4 +139,4 @@
133
139
  "preset.readOnly": "Только чтение",
134
140
  "preset.workspaceWrite": "Запись в рабочую область"
135
141
  }
136
- }
142
+ }
@@ -52,6 +52,7 @@
52
52
  "viewer.text": "Простой текст",
53
53
  "wrap.aria": "Перенос строк",
54
54
  "wrap.disable": "Отключить перенос строк",
55
- "wrap.enable": "Включить перенос строк"
55
+ "wrap.enable": "Включить перенос строк",
56
+ "unsupportedFile": "Предпросмотр для этого типа файлов пока недоступен."
56
57
  }
57
58
  }
@@ -0,0 +1,48 @@
1
+ {
2
+ "settings.archivedSessions": {
3
+ "nav": "Архив сессий",
4
+ "search": "Поиск по архивным сессиям",
5
+ "loading": "Чтение сессий…",
6
+ "empty": "Нет архивных сессий.",
7
+ "unavailable": "Здесь нет архивных сессий, доступных для восстановления.",
8
+ "emptySearch": "Нет подходящих сессий.",
9
+ "unarchive": "Разархивировать",
10
+ "unarchiveNamed": "Разархивировать «{title}»",
11
+ "ungrouped": "Без группы",
12
+ "time.now": "сейчас",
13
+ "time.minutes": "{n} мин",
14
+ "time.hours": "{n} ч",
15
+ "time.days": "{n} дн",
16
+ "time.months": "{n} мес",
17
+ "time.years": "{n} г"
18
+ },
19
+ "sidebarTerminal": {
20
+ "attachmentEnded": "Подключение к терминалу завершено. Переподключитесь для продолжения.",
21
+ "cleanupFailed": "Не удалось завершить терминал «{title}»: {message}",
22
+ "closed": "Терминал закрыт.",
23
+ "connecting": "Подключение…",
24
+ "control": "Перехватить управление",
25
+ "creating": "Запуск…",
26
+ "description": "Выполнение команд в рабочей области сессии",
27
+ "disconnected": "Отключено.",
28
+ "exited": "Процесс завершился с кодом {code}",
29
+ "failed": "Ошибка терминала: {message}",
30
+ "inputFull": "Буфер ввода переполнен. Переподключитесь и повторите попытку.",
31
+ "invalidOutput": "Не удалось получить экран терминала. Переподключитесь для восстановления.",
32
+ "loading": "Чтение окружения терминала…",
33
+ "missingTerminal": "Этот терминал больше не существует. Откройте новый терминал.",
34
+ "new": "Новый терминал",
35
+ "readonly": "Этот вид доступен только для чтения.",
36
+ "reconnect": "Переподключиться",
37
+ "recoveryFailed": "Не удалось восстановить терминал: {message}",
38
+ "rename": "Название терминала",
39
+ "retry": "Повторить",
40
+ "retryRecovery": "Повторить восстановление терминала",
41
+ "shell": "Выбрать командную оболочку",
42
+ "shellEmpty": "Нет доступных оболочек",
43
+ "shellLoading": "Загрузка оболочек…",
44
+ "terminalLimit": "Достигнут лимит терминалов. Закройте неиспользуемые терминалы и повторите попытку. Завершённые терминалы также учитываются в лимите.",
45
+ "title": "Терминал",
46
+ "unavailable": "Недоступно"
47
+ }
48
+ }
@@ -531,6 +531,9 @@
531
531
  "hostIncompatibleBody": "Плагин {plugin} требует DSH версии {requirement}, а на этом сервере запущен {host}. Установка, скорее всего, нарушит работу плагина, и единственным выходом будет ручной откат версии.\nНичего не было изменено — плагин остаётся на текущей версии.\nЕсли вы уверены, что номер версии определён неверно, вы можете продолжить обновление.",
532
532
  "hostIncompatibleKeep": "Оставить текущую версию",
533
533
  "hostIncompatibleTitle": "Для этого релиза требуется более новая версия DSH",
534
- "hostIncompatibleUnknown": "неизвестная версия"
534
+ "hostIncompatibleUnknown": "неизвестная версия",
535
+ "hostUpdateHint": "Установлено и обновляется десктоп-клиентом; маркет только отображает статус",
536
+ "hostUpdateReady": "Новая версия {0}",
537
+ "setSelfHostManagedHint": "Эта копия установлена десктоп-клиентом; обновляйте её через десктопное приложение."
535
538
  }
536
- }
539
+ }
@@ -163,7 +163,9 @@
163
163
  "visibleModelsHideInactive": "Скрыть неактивные",
164
164
  "visibleModelsReset": "Сбросить выбор моделей",
165
165
  "visibleModelsStaleHint": "{count} выбранных моделей больше нет в каталоге (возможно, выведены из эксплуатации); на остальные модели это не влияет. Удалите их или сохраните.",
166
- "visibleModelsTitle": "Видимые модели"
166
+ "visibleModelsTitle": "Видимые модели",
167
+ "showSidebarQuota": "Показывать карточку квоты в боковой панели",
168
+ "showSidebarQuotaHint": "Когда включено, карточка тарифа и квоты Command Code располагается внизу боковой панели (над Настройками) и открывает полный дашборд. По умолчанию выключено: ничего не отображается слева и фоновый опрос не выполняется. Применяется при сохранении."
167
169
  },
168
170
  "commandcode": {
169
171
  "title": "📊 Использование Command Code{account}",
@@ -196,5 +198,56 @@
196
198
  "noData": "(нет данных — проверьте API-ключ)",
197
199
  "errorText": "Не удалось получить статистику Command Code: {message}",
198
200
  "imageGate": "В сессии уже есть изображения, а модель {model} не поддерживает изображения; выберите модель с поддержкой зрения или удалите изображения из сессии."
201
+ },
202
+ "panel.commandcode": {
203
+ "active": "Активен",
204
+ "close": "Закрыть",
205
+ "closeHint": "Вернуться к диалогу",
206
+ "coolingDown": "Охлаждение",
207
+ "credits": "Кредиты",
208
+ "errorGeneric": "Не удалось получить данные об использовании аккаунта",
209
+ "errorInvalidKey": "API-ключ недействителен или истёк",
210
+ "errorInvalidKeyHint": "Сервер отклонил все запросы (401). Проверьте ключ для этого аккаунта или сгенерируйте новый в консоли commandcode.ai.",
211
+ "errorNetwork": "Не удалось связаться с сервисом Command Code",
212
+ "errorNetworkHint": "Запрос не достиг сервера. Проверьте сетевое подключение или настройку базового URL API.",
213
+ "errorServiceUnavailable": "Сервис Command Code временно недоступен",
214
+ "errorServiceUnavailableHint": "Сервер возвращает ошибки (5xx). Повторите попытку через минуту.",
215
+ "exceeded": "Превышен",
216
+ "exhausted": "Исчерпан",
217
+ "failed": "ошибок",
218
+ "fiveHour": "5-часовое окно",
219
+ "fiveHourShort": "5 ч",
220
+ "free": "Бесплатно",
221
+ "invalidKey": "Неверный ключ",
222
+ "limits": "Лимиты",
223
+ "loading": "Загрузка…",
224
+ "monthly": "Месячный лимит",
225
+ "monthlyLimit": "Месячный лимит",
226
+ "monthlyUsed": "Использовано за месяц",
227
+ "nav": "Command Code",
228
+ "noKey": "Ключ не настроен",
229
+ "noKeyHint": "Добавьте API-ключ Command Code в Настройках, чтобы отслеживать квоту и кредиты.",
230
+ "partial": "Частично",
231
+ "periodEnds": "Окончание периода",
232
+ "plan": "Тариф",
233
+ "purchased": "Приобретено",
234
+ "refresh": "Обновить",
235
+ "refreshing": "Обновление…",
236
+ "remaining": "Осталось",
237
+ "requests": "Запросы",
238
+ "resets": "Сброс через",
239
+ "spend": "Расходы",
240
+ "subtitle": "Тарифы, кредиты и плавающие окна квот",
241
+ "successRate": "Успешность",
242
+ "tokens": "Токены",
243
+ "tokensIn": "Входящие токены",
244
+ "tokensOut": "Исходящие токены",
245
+ "unavailable": "Недоступно",
246
+ "unconfigured": "Не настроено",
247
+ "updated": "Обновлено",
248
+ "usage": "Использование",
249
+ "weekly": "Недельное окно",
250
+ "weeklyShort": "7 дн",
251
+ "windowUnlimited": "Без ограничений"
199
252
  }
200
- }
253
+ }
@@ -311,6 +311,11 @@
311
311
  "stats.costUnavailable": "Цены моделей недоступны (повторяем запрос) — стоимость пока не может быть рассчитана.",
312
312
  "settings.toolSort": "Схемы инструментов · Сортировка по умолчанию",
313
313
  "tool.sort.count": "По числу вызовов",
314
- "tool.hitsTip": "Сколько раз этот инструмент вызывался и возвращал ответ в контексте текущего шага"
314
+ "tool.hitsTip": "Сколько раз этот инструмент вызывался и возвращал ответ в контексте текущего шага",
315
+ "browser.search.skill": "Фильтр навыков…",
316
+ "cat.skill": "Инъекции навыков",
317
+ "cmd.label": "Контекст",
318
+ "cmd.section": "Контекст",
319
+ "stats.cacheHitTip": "Накопительная доля чтения из кэша от общего платного ввода за сессию."
315
320
  }
316
- }
321
+ }
@@ -448,6 +448,21 @@
448
448
  "overview.quick.syncTitle": "Синхронизировать конфигурации между устройствами (Git / WebDAV)",
449
449
  "overview.quick.backupTitle": "Полный снимок с возможностью отката в любой момент",
450
450
  "overview.nav.activity": "Активность",
451
- "overview.nav.about": "О плагине"
451
+ "overview.nav.about": "О плагине",
452
+ "retention.appliesTo": "Применяется к: снимкам перед импортом + архивам запланированных резервных копий",
453
+ "retention.hint": "Определяет, сколько копий сохраняет автоочистка (общее правило для снимков и бэкапов). Закреплённые снимки и незавершённые точки восстановления никогда не удаляются.",
454
+ "retention.invalid": "Недопустимые параметры ротации — каждое поле должно быть целым числом в разрешённом диапазоне",
455
+ "retention.keepLast": "Хранить последних",
456
+ "retention.keepLastHint": "Хранить N самых свежих копий по времени; 0 отключает уровень «недавних»",
457
+ "retention.keepMonthly": "Хранить ежемесячных",
458
+ "retention.keepMonthlyHint": "Дополнительно сохранять самую свежую копию каждого месяца, не более N месяцев; 0 отключает",
459
+ "retention.keepYearly": "Хранить ежегодных",
460
+ "retention.keepYearlyHint": "Дополнительно сохранять самую свежую копию каждого года, не более N лет; 0 отключает",
461
+ "retention.months": "мес.",
462
+ "retention.summary": "Последних {keepLast} · ежемесячных {keepMonthly} · ежегодных {keepYearly}",
463
+ "retention.tiersOff": "Уровни не включены (эквивалентно «хранить только N самых свежих»)",
464
+ "retention.title": "Политика ротации копий",
465
+ "retention.unit": "копий",
466
+ "retention.years": "лет"
452
467
  }
453
- }
468
+ }
@@ -349,6 +349,34 @@
349
349
  "registryScanHint": "Опрос реестров npm: доступность, пинг и последняя версия dsh-plugin-console для выбора основного источника",
350
350
  "registryScanNoVersion": "Пакет отсутствует в этом реестре",
351
351
  "registryScanSummary": "Сканирование завершено: {ok} из {total} доступны",
352
- "registryScanning": "Сканирование…"
352
+ "registryScanning": "Сканирование…",
353
+ "adoptableDetected": "Теперь совместим: версия {version} прошла проверку исходного кода — нажмите «Адаптирован — разблокировать» для включения (автоматически никогда не включается)",
354
+ "compatGateAutoDetect": "Проверять адаптированные плагины при открытии (только подсказка)",
355
+ "compatGateAutoDisable": "Автоматически отключать несовместимые плагины при обновлении",
356
+ "compatGateHint": "Выключите для полностью ручного управления: обновление только выдаст предупреждение и не изменит тумблеры, а подсказки проверки отображаться не будут",
357
+ "compatGateLabel": "Гейт совместимости",
358
+ "compatGateSaved": "Настройки гейта совместимости сохранены",
359
+ "fwFailedButUpgraded": "Сам фреймворк уже обновлён до {v} и активен — не удался только финальный шаг «перезапуск сервиса». Используйте перезапуск сервиса для подтверждения или выполните откат при необходимости.",
360
+ "fwPanelAvailable": "Доступно обновление: {v}",
361
+ "fwPanelBtn": "Фреймворк",
362
+ "fwPanelCheckFailed": "Не удалось проверить версию: {err}",
363
+ "fwPanelChecking": "проверка…",
364
+ "fwPanelConfirmBody": "Обновить до {v}? Скрипт сохранит резервную копию конфигурации, предварительно отключит несовместимые плагины, остановит сервис, установит новую версию и перезапустит её; при сбое запуска сначала изолирует проблему и повторит попытку, и только затем выполнит полный откат.",
365
+ "fwPanelCurrent": "Установлено",
366
+ "fwPanelNoRecord": "Записей об обновлениях пока нет (последние действия по обновлению/откату всегда отображаются здесь)",
367
+ "fwPanelRecheck": "Перепроверить версию",
368
+ "fwPanelRefreshStatus": "Обновить статус",
369
+ "fwPanelTitle": "Обновление фреймворка DSH",
370
+ "fwPanelUpToDate": "Актуальная версия (последняя {latest} · следующая {next})",
371
+ "fwRollbackDone": "Уже выполнен откат до {v} (это версия из снимка; более ранней версии для восстановления нет)",
372
+ "gateBtn": "Гейт совместимости",
373
+ "gateModalTitle": "Гейт совместимости плагинов",
374
+ "gatePendingInfo": "Ожидают адаптации: {n} плагин(ов) — зафиксировано проверкой обновления или карантином запуска; разблокируйте после обновления плагина",
375
+ "gatePendingNone": "Нет плагинов, ожидающих проверки",
376
+ "gateTitle": "Совместимость плагинов",
377
+ "riskyEnableBody": "Этот плагин признан несовместимым с текущим фреймворком (автоматически отключён во время обновления). Принудительное включение может привести к сбою следующего запуска DSH и потребовать ручного восстановления. Принудительно включить?",
378
+ "riskyEnableCancel": "Отмена",
379
+ "riskyEnableConfirm": "Принудительно включить",
380
+ "riskyEnableTitle": "Принудительно включить несовместимый плагин?"
353
381
  }
354
382
  }
@@ -23,6 +23,24 @@
23
23
  "progressToolNames": "Имена инструментов прогресса (через запятую)",
24
24
  "saving": "Сохранение…",
25
25
  "ready": "Сохранить",
26
- "saved": "Сохранено"
26
+ "saved": "Сохранено",
27
+ "checkUpdateFailed": "Ошибка проверки",
28
+ "dryRunMode": "Режим аудита / Dry-run (только логирование, без отклонения)",
29
+ "lastViolation": "Последний инцидент",
30
+ "noViolations": "В текущем сеансе зацикливаний не обнаружено.",
31
+ "resetStats": "Сбросить статистику",
32
+ "statsResetDone": "Статистика сброшена",
33
+ "strictToolLimit": "Лимит строгих инструментов",
34
+ "strictTools": "Строгие инструменты (через запятую, сниженный лимит)",
35
+ "telemetryTitle": "Телеметрия защиты",
36
+ "totalBlocked": "Предотвращено циклов",
37
+ "upToDate": "Актуальная версия",
38
+ "updateAvailable": "Доступно обновление: v{v}",
39
+ "updateChecking": "Проверка обновлений…",
40
+ "updateFailed": "Ошибка обновления: {msg}",
41
+ "updateNow": "Обновить сейчас",
42
+ "updateSuccess": "Успешно обновлено до v{v}!",
43
+ "updating": "Обновление…",
44
+ "version": "Версия"
27
45
  }
28
- }
46
+ }
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "dsh-agent-orchestrator": {
3
3
  "title": "Мульти-агентный оркестратор",
4
- "subtitle": "Автономный рабочий процесс на базе DAG с оптимизацией кэширования промптов"
4
+ "subtitle": "Автономный рабочий процесс на базе DAG с оптимизацией кэширования промптов",
5
+ "description": "Декомпозиция и выполнение задач специализированными автономными агентами с оптимизацией кэширования промптов."
5
6
  },
6
7
  "@goodandready/dsh-agent-orchestrator": {
7
8
  "title": "Мульти-агентный оркестратор",
@@ -0,0 +1,27 @@
1
+ {
2
+ "dsh-key-limits": {
3
+ "accountOrder": "Очерёдность аккаунтов",
4
+ "activeOnTop": "Активный аккаунт всегда сверху",
5
+ "checkForUpdates": "Проверить обновления",
6
+ "checkingUpdates": "Проверка…",
7
+ "checkUpdateFailed": "Не удалось проверить обновления",
8
+ "composerBar": "Кнопка в строке ввода",
9
+ "floatChip": "Плавающий чип",
10
+ "moveDown": "Вниз",
11
+ "moveUp": "Вверх",
12
+ "refreshHours": "Интервал обновления (ч)",
13
+ "saved": "Сохранено",
14
+ "storageDir": "Директория хранилища",
15
+ "totalAccounts": "Всего аккаунтов",
16
+ "updateAvailable": "Доступно обновление: ",
17
+ "updateFailed": "Ошибка обновления: ",
18
+ "updateNow": "Обновить сейчас",
19
+ "updaterCurrent": "Текущая версия: v{version}",
20
+ "updaterLatest": "Новая версия: v{version}",
21
+ "updaterUpToDate": "Установлена актуальная версия",
22
+ "updating": "Обновление…",
23
+ "restartRequired": " (требуется перезапуск)",
24
+ "upToDate": "Актуальная версия",
25
+ "updateSuccess": "Обновлено до "
26
+ }
27
+ }