zames_pro 2.82.139 → 2.82.141

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.
@@ -15,7 +15,6 @@ export const commonMessages = {
15
15
  en: 'Working directory: {v}',
16
16
  },
17
17
  'status.review_mode': { ru: 'Режим ревью: {v}', en: 'Review mode: {v}' },
18
- 'status.review_none': { ru: 'нет', en: 'no' },
19
18
  'status.orig_dir': {
20
19
  ru: 'Исходная директория: {v}',
21
20
  en: 'Original directory: {v}',
@@ -29,19 +28,19 @@ export const commonMessages = {
29
28
  ru: 'System prompt на след. задаче: {v}',
30
29
  en: 'System prompt next task: {v}',
31
30
  },
32
- 'status.last_chat': { ru: 'Last chat: {v}', en: 'Last chat: {v}' },
31
+ 'status.last_chat': { ru: 'Последний чат: {v}', en: 'Last chat: {v}' },
33
32
  'status.sessions': { ru: 'Сессии: {v}', en: 'Sessions: {v}' },
34
33
  'status.dev': {
35
- ru: 'Dev mode (auto-reload): {v}',
34
+ ru: 'Режим разработки (авто-перечитывание): {v}',
36
35
  en: 'Dev mode (auto-reload): {v}',
37
36
  },
38
37
  'status.max_iter': {
39
38
  ru: 'Лимит итераций: {v} (0 = без лимита)',
40
39
  en: 'Iteration limit: {v} (0 = unlimited)',
41
40
  },
42
- 'status.headless': { ru: 'Headless: {v}', en: 'Headless: {v}' },
43
- 'status.debug': { ru: 'Debug: {v}', en: 'Debug: {v}' },
44
- 'status.undo': { ru: 'Undo: {v}', en: 'Undo: {v}' },
41
+ 'status.headless': { ru: 'Без окна (headless): {v}', en: 'Headless: {v}' },
42
+ 'status.debug': { ru: 'Отладка: {v}', en: 'Debug: {v}' },
43
+ 'status.undo': { ru: 'Откат (undo): {v}', en: 'Undo: {v}' },
45
44
  'status.checkpoint': { ru: 'Чекпойнты: {v}', en: 'Checkpoints: {v}' },
46
45
  'status.transcript': { ru: 'Транскрипт: {v}', en: 'Transcript: {v}' },
47
46
  'status.locale': { ru: 'Язык: {v}', en: 'Language: {v}' },
@@ -109,8 +108,8 @@ export const commonMessages = {
109
108
  en: 'The sign-in did not carry over to headless — staying in the visible window (it can be minimised).',
110
109
  },
111
110
  'msg.first_hint': {
112
- ru: 'Подсказка: «/» — список команд, Ctrl+R — поиск по истории, картинку можно вставить через Ctrl+Shift+V.',
113
- en: 'Hint: "/" lists commands, Ctrl+R searches history, paste an image with Ctrl+Shift+V.',
111
+ ru: 'Подсказка: «/» — список команд, Ctrl+R — поиск по истории, картинку можно вставить через Ctrl+V (пустая вставка).',
112
+ en: 'Hint: "/" lists commands, Ctrl+R searches history, paste an image with Ctrl+V (or an empty paste).',
114
113
  },
115
114
  'msg.queue_hint': {
116
115
  ru: 'Пока агент работает, можно печатать следующее сообщение — оно уйдёт в очередь (Enter — отправить, Esc — прервать).',
@@ -143,9 +142,15 @@ export const commonMessages = {
143
142
  'askuser.your_answer': { ru: 'Ваш ответ:', en: 'Your answer:' },
144
143
  'askuser.hint_select': { ru: 'выбор', en: 'select' },
145
144
  'askuser.hint_ok': { ru: 'ок', en: 'ok' },
146
- 'askuser.hint_dismiss': { ru: 'закрыть', en: 'dismiss' },
145
+ // Not 'dismiss': Esc in the option list returns NOTHING, so the model gets
146
+ // no answer at all -- the same outcome as Esc while typing the own answer.
147
+ 'askuser.hint_dismiss': { ru: 'без ответа', en: 'no answer' },
147
148
  'askuser.hint_send': { ru: 'отправить', en: 'send' },
148
149
  'askuser.hint_cancel': { ru: 'отмена', en: 'cancel' },
150
+ 'askuser.enter_send': {
151
+ ru: 'Enter — отправить ответ (многострочный — через вставку)',
152
+ en: 'Enter sends the answer (multi-line: paste it)',
153
+ },
149
154
  'confirm.yes': { ru: 'Да', en: 'Yes' },
150
155
  'confirm.no': { ru: 'Нет', en: 'No' },
151
156
  'perm.ask_sub': {
@@ -209,8 +214,8 @@ export const commonMessages = {
209
214
  en: '⚠ No image found in the clipboard (tried: {via}).',
210
215
  },
211
216
  'msg.clip_hint': {
212
- ru: ' Проще всего: вставьте путь к файлу (например tmp/pic.png) — файл приложится к сообщению. Для клипборда нужна утилита (Linux/X11 — xclip или xsel, Wayland — wl-clipboard; Windows — PowerShell, macOS — pngpaste).',
213
- en: ' Easiest: paste a path to a file (e.g. tmp/pic.png) — it will be attached to the message. Clipboard paste needs a tool (Linux/X11 — xclip or xsel, Wayland — wl-clipboard; Windows — PowerShell, macOS — pngpaste).',
217
+ ru: ' Проще всего: вставьте путь к файлу (например tmp/pic.png) — файл приложится к сообщению. Для клипборда нужна утилита: Linux/X11 — xclip или xsel, Wayland — wl-paste (пакет wl-clipboard), Windows — powershell.exe, macOS — pngpaste.',
218
+ en: ' Easiest: paste a path to a file (e.g. tmp/pic.png) — it will be attached to the message. Clipboard paste needs a tool: Linux/X11 — xclip or xsel, Wayland — wl-paste (the wl-clipboard package), Windows — powershell.exe, macOS — pngpaste.',
214
219
  },
215
220
  'msg.clip_container': {
216
221
  ru: ' Похоже, вы в контейнере/Dev Container: клипборд Windows отсюда недоступен. Вставьте путь к файлу (например tmp/pic.png) — он приложится к сообщению.',
@@ -68,8 +68,8 @@ export const configMessages = {
68
68
  en: 'Full-screen TUI mode (alternate screen)',
69
69
  },
70
70
  'cfg.f.ui_mouseScroll': {
71
- ru: 'Колесо: лог или терминал (выкл = выделение без Shift)',
72
- en: 'Wheel: log or terminal (off = select without Shift)',
71
+ ru: 'Колесо мыши: вкл (по умолчанию) — скроллит диалог, выделение через Shift; выкл — мышью владеет терминал (обычное выделение, колесо инертно)',
72
+ en: 'Mouse wheel: on (default) — scrolls the dialog, select with Shift; off — the terminal owns the mouse (normal selection, wheel inert)',
73
73
  },
74
74
  'cfg.f.maxIterations': {
75
75
  ru: 'Лимит итераций на задачу',
@@ -251,6 +251,13 @@ export const configMessages = {
251
251
  ru: 'Язык переключён на {v}.',
252
252
  en: 'Language switched to {v}.',
253
253
  },
254
+ // The project `.zamesrc.json` is merged AFTER the home config, so a key it
255
+ // also sets silently wins — the operator sees "saved", then the old value
256
+ // after a restart (a stale `ui.locale: en` looked like a lost setting).
257
+ 'cfg.shadowed': {
258
+ ru: '⚠ Проектный конфиг {file} переопределяет: {keys} — после перезапуска будет его значение. Уберите эти ключи из проектного файла.',
259
+ en: '⚠ The project config {file} overrides: {keys} — after a restart its value wins. Remove these keys from the project file.',
260
+ },
254
261
  'cfg.lang_usage': {
255
262
  ru: 'Использование: /config lang <ru|en>',
256
263
  en: 'Usage: /config lang <ru|en>',
@@ -77,8 +77,8 @@ export const deepseekMessages = {
77
77
  en: '✖ Could not paste the whole text into the input ({got} of {want} chars). The message was not sent to avoid sending a truncated text. Retry or split the message.',
78
78
  },
79
79
  'ds.send_no_start': {
80
- ru: '✖ Ответ не начал генерироваться за 35с даже после повторной отправки. Проверь чат {provider} вручную (возможно, кнопка отправки не нажимается или сессия разлогинилась).',
81
- en: '✖ The answer did not start generating within 35s even after resending. Check the {provider} chat manually (the send button may not be clickable or the session may have expired).',
80
+ ru: '✖ Ответ не начал генерироваться примерно за 50с (30с + 20с после повторного Enter). Проверь чат {provider} вручную (возможно, кнопка отправки не нажимается или сессия разлогинилась).',
81
+ en: '✖ The answer did not start generating within about 50s (30s + 20s after a second Enter). Check the {provider} chat manually (the send button may not be clickable or the session may have expired).',
82
82
  },
83
83
  'ds.send_no_new_answer': {
84
84
  ru: '✖ Новый ответ не получен — на странице остался прежний текст. Возможно, сообщение не отправилось. Проверь чат {provider} вручную.',
@@ -6,13 +6,18 @@ export const doctorMessages = {
6
6
  'doctor.not_repo': { ru: 'не репозиторий', en: 'not a repository' },
7
7
  'doctor.loaded': { ru: 'загружен', en: 'loaded' },
8
8
  'doctor.error': { ru: 'ошибка: {v}', en: 'error: {v}' },
9
- 'doctor.unknown': { ru: 'неизвестно', en: 'unknown' },
10
9
  'doctor.bundled': { ru: 'встроенный chromium', en: 'bundled chromium' },
11
10
  'doctor.auth_saved': {
12
- ru: 'сессия сохранена (авто-вход готов)',
13
- en: 'session saved (auto re-login ready)',
11
+ ru: 'сессия сохранена — авто-вход готов',
12
+ en: 'session saved — auto re-login ready',
13
+ },
14
+ // Says what the row checks: the per-provider marker written AFTER a sign-in.
15
+ // A profile with a live cookie but no marker also lands here, so "no saved
16
+ // session" would be wrong (and the fix is to open the chat, not to sign in).
17
+ 'doctor.auth_none': {
18
+ ru: 'нет отметки о входе (отметка пишется после входа этого провайдера)',
19
+ en: 'no sign-in marker (written after this provider signs in)',
14
20
  },
15
- 'doctor.auth_none': { ru: 'нет сохранённой сессии', en: 'no saved session' },
16
21
  'doctor.clipboard_none': {
17
22
  ru: 'инструмент не найден (вставка картинок отключена)',
18
23
  en: 'no tool found (image paste disabled)',
@@ -110,7 +115,6 @@ export const doctorMessages = {
110
115
  ru: 'Перезагружено модулей: {n}. Браузер и чат не тронуты.',
111
116
  en: 'Modules reloaded: {n}. Browser and chat untouched.',
112
117
  },
113
- 'msg.not_dir': { ru: 'Не директория: {v}', en: 'Not a directory: {v}' },
114
118
  'prompt.review': { ru: 'REVIEW', en: 'REVIEW' },
115
119
  'msg.workdir_error': {
116
120
  ru: 'Не удалось определить рабочую директорию:',
package/dist/i18n/glm.js CHANGED
@@ -4,8 +4,8 @@
4
4
  // `model.*` / `provider.*` keys live in i18n/help.ts and i18n/qwen.ts.
5
5
  export const glmMessages = {
6
6
  'glm.guest_mode': {
7
- ru: 'GLM: вход не выполнен, работаю гостем (сообщения может блокировать капча). Войдите через /provider login или запустите с --headed.',
8
- en: 'GLM: not signed in, running as a guest (a captcha may block messages). Log in via /provider login or launch with --headed.',
7
+ ru: '✖ GLM: гостевой лимит z.ai исчерпан (без входа доступно лишь несколько сообщений), сообщение не отправлено. Войдите через /provider login или запустите с --headed.',
8
+ en: '✖ GLM: the z.ai guest limit is exhausted (a signed-out visitor gets only a few messages), the message was not sent. Log in via /provider login or launch with --headed.',
9
9
  },
10
10
  'glm.login_ok': {
11
11
  ru: 'GLM: вход выполнен.',
package/dist/i18n/help.js CHANGED
@@ -35,17 +35,17 @@ export const helpMessages = {
35
35
  en: 'headless browser (default)',
36
36
  },
37
37
  'help.opt.headed': {
38
- ru: 'показать окно браузера (отладка/вход)',
39
- en: 'show the browser window (debug/sign-in)',
38
+ ru: 'показать окно браузера (отладка/вход; GLM и так работает с окном)',
39
+ en: 'show the browser window (debug/sign-in; GLM already runs headed)',
40
40
  },
41
41
  'help.opt.provider': {
42
- ru: 'выбрать провайдера чата (deepseek | qwen | glm) на этот запуск',
43
- en: 'select the chat provider (deepseek | qwen | glm) for this run',
42
+ ru: 'выбрать провайдера чата на этот запуск (deepseek | qwen | glm; сохраняется в конфиг)',
43
+ en: 'select the chat provider for this run (deepseek | qwen | glm; saved to the config)',
44
44
  },
45
45
  'help.opt.debug': { ru: 'подробный лог', en: 'verbose log' },
46
46
  'help.opt.dev': {
47
- ru: 'режим разработки: авто-перечитывание модулей',
48
- en: 'dev mode: auto-reload modules',
47
+ ru: 'режим разработки: dev-команды, BACKLOG-заметки в промпте и авто-перечитывание модулей',
48
+ en: 'dev mode: dev-only commands, BACKLOG notes in the prompt and module auto-reload',
49
49
  },
50
50
  'help.opt.version': { ru: 'показать версию', en: 'show version' },
51
51
  'help.opt.no_color': {
@@ -62,52 +62,52 @@ export const helpMessages = {
62
62
  en: 'type + Enter queue a message (sent after the current task)',
63
63
  },
64
64
  'help.key.history': {
65
- ru: '↑ / ↓ история введённых сообщений',
66
- en: '↑ / ↓ input history',
65
+ ru: '↑ / ↓ история введённых сообщений (сохраняется в ~/.zames/history.json)',
66
+ en: '↑ / ↓ input history (saved to ~/.zames/history.json)',
67
67
  },
68
68
  'help.key.search': {
69
- ru: 'Ctrl+R поиск по истории (обратный)',
70
- en: 'Ctrl+R reverse-search the history',
69
+ ru: 'Ctrl+R поиск по истории ввода (обратный; Ctrl+R — дальше, Enter — принять, Esc — отмена)',
70
+ en: 'Ctrl+R reverse search the input history (Ctrl+R next, Enter accept, Esc cancel)',
71
71
  },
72
72
  'help.key.undo': {
73
73
  ru: 'Ctrl+_ отменить правку в строке ввода',
74
74
  en: 'Ctrl+_ undo the last edit in the input line',
75
75
  },
76
76
  'help.key.words': {
77
- ru: 'Ctrl+← / Ctrl+→ перемещение по словам',
78
- en: 'Ctrl+← / Ctrl+→ move by words',
77
+ ru: 'Ctrl+← / Ctrl+→ перемещение по словам (Ctrl+Delete / Alt+Delete — удалить слово справа)',
78
+ en: 'Ctrl+← / Ctrl+→ move by words (Ctrl+Delete / Alt+Delete — delete the word right)',
79
+ },
80
+ 'help.key.clear_screen': {
81
+ ru: 'Ctrl+L очистить экран и перерисовать блок ввода',
82
+ en: 'Ctrl+L clear the screen and repaint the input block',
79
83
  },
80
84
  'help.key.slash': {
81
- ru: '/ + Tab подсказка и автодополнение slash-команд (Ctrl+N/P — вверх/вниз)',
82
- en: '/ + Tab slash-command hints and completion (Ctrl+N/P — up/down)',
85
+ ru: '/ + Tab подсказка и автодополнение slash-команд (Ctrl+N/P — выбор)',
86
+ en: '/ + Tab slash-command hints and completion (Ctrl+N/P — select)',
83
87
  },
84
88
  'help.key.newline': {
85
- ru: 'Ctrl+J / Ctrl+Enter новая строка (Shift+Enter в терминалах с поддержкой)',
86
- en: 'Ctrl+J / Ctrl+Enter new line (Shift+Enter in capable terminals)',
87
- },
88
- 'help.key.backslash': {
89
- ru: '\\ + Enter тоже новая строка',
90
- en: '\\ + Enter also a new line',
89
+ ru: '\\ + Enter / Ctrl+J новая строка (Enter убирает этот \\; Ctrl+Enter и Shift+Enter — только в терминалах с kitty-протоколом)',
90
+ en: '\\ + Enter / Ctrl+J new line (Enter drops that \\; Ctrl+Enter and Shift+Enter only in terminals with the kitty protocol)',
91
91
  },
92
92
  'help.key.attach': {
93
- ru: 'Ctrl+Shift+V картинки вставить изображение/файл (сохранится в tmp)',
94
- en: 'Ctrl+Shift+V image paste an image/file (saved to tmp)',
93
+ ru: 'Ctrl+V / пустая вставка картинку/файл из буфера обмена в <project>/tmp (вставляется маркер)',
94
+ en: 'Ctrl+V / empty paste an image/file from the clipboard into <project>/tmp (a marker is inserted)',
95
95
  },
96
96
  'help.key.esc': {
97
- ru: 'Esc, Ctrl+C прервать текущую генерацию',
98
- en: 'Esc, Ctrl+C abort current generation',
97
+ ru: 'Esc, Ctrl+C Esc — прервать генерацию; Ctrl+C — прервать инструмент, второй раз (в 2с) — весь прогон; без задачи — выход',
98
+ en: 'Esc, Ctrl+C Esc — abort generation; Ctrl+C — abort the tool, twice (within 2s) — the whole run; idle — exit',
99
99
  },
100
100
  'help.key.scroll': {
101
- ru: 'PgUp / PgDn вверх/вниз по диалогу (Home/End — в начало/конец) [full-screen]',
102
- en: 'PgUp / PgDn up/down the dialog (Home/End — top/bottom) [full-screen]',
101
+ ru: 'колесо / PgUp / PgDn прокрутка диалога (колесо — при ui.mouseScroll=on, умолч.; Home/End — в начало/конец при пустом вводе) [full-screen]',
102
+ en: 'wheel / PgUp / PgDn scroll the dialog (the wheel needs ui.mouseScroll=on, the default; Home/End — top/bottom with an empty input) [full-screen]',
103
103
  },
104
104
  'help.key.wheel': {
105
105
  ru: 'ui.mouseScroll on (умолч.) — колесо скроллит диалог (выделение Shift); off — выделение мышью',
106
106
  en: 'ui.mouseScroll on (default) — wheel scrolls the dialog (select: Shift); off — select with the mouse',
107
107
  },
108
108
  'help.key.bang': {
109
- ru: '!команда выполнить shell-команду напрямую (мимо модели)',
110
- en: '!command run a shell command directly (bypass the model)',
109
+ ru: '!команда выполнить shell-команду напрямую, без модели (вывод в транскрипт)',
110
+ en: '!command run a shell command directly, no model (output goes to the transcript)',
111
111
  },
112
112
  'help.commands': { ru: 'Команды:', en: 'Commands:' },
113
113
  'help.sec.session': { ru: 'Сессия', en: 'Session' },
@@ -122,105 +122,108 @@ export const helpMessages = {
122
122
  en: '/new, /clear new chat (reset context)',
123
123
  },
124
124
  'help.cmd.sessions': {
125
- ru: '/sessions [фильтр] список сохранённых сессий (можно фильтровать)',
126
- en: '/sessions [filter] list saved sessions (optionally filtered)',
125
+ ru: '/sessions [фильтр] сохранённые сессии: фильтр по заголовку или каталогу (в TUI — выбор и открытие)',
126
+ en: '/sessions [filter] saved sessions: filter by title or workdir (the TUI opens the pick list)',
127
127
  },
128
128
  'help.cmd.resume_id': {
129
- ru: '/resume-id <id> восстановить сессию по полному id',
130
- en: '/resume-id <id> resume a session by full id',
129
+ ru: '/resume-id <id> открыть сессию по полному id и напечатать диалог',
130
+ en: '/resume-id <id> open a session by full id and print its dialogue',
131
131
  },
132
132
  'help.cmd.chats': {
133
- ru: '/chats [фильтр] список последних чатов провайдера',
134
- en: '/chats [filter] recent chats of the active provider',
133
+ ru: '/chats [фильтр] последние чаты провайдера (в TUI — выбор и открытие, с диалогом)',
134
+ en: '/chats [filter] recent chats of the active provider (the TUI opens the pick list and prints the dialogue)',
135
135
  },
136
136
  'help.cmd.last': {
137
- ru: '/last открыть последний чат этого каталога',
138
- en: '/last open the last chat of this directory',
137
+ ru: '/last открыть последний чат этого каталога и напечатать диалог',
138
+ en: "/last open this directory's last chat and print its dialogue",
139
139
  },
140
140
  'help.cmd.chat': {
141
- ru: '/chat показать текущий chat id',
142
- en: '/chat show current chat id',
141
+ ru: '/chat показать текущий chat id и его URL',
142
+ en: '/chat show the current chat id and its URL',
143
143
  },
144
144
  'help.cmd.cd': {
145
- ru: '/cd <path> сменить рабочую директорию',
146
- en: '/cd <path> change working directory',
145
+ ru: '/cd <path> сменить рабочую директорию (без аргумента — вернуться в корень; следующая задача начнёт новый чат)',
146
+ en: '/cd <path> change the working directory (no argument — back to the root; the next task starts a fresh chat)',
147
147
  },
148
148
  'help.cmd.pwd': {
149
149
  ru: '/pwd текущая директория',
150
150
  en: '/pwd current directory',
151
151
  },
152
152
  'help.cmd.status': {
153
- ru: '/status состояние сессии',
154
- en: '/status session state',
153
+ ru: '/status состояние сессии: каталог, чат, лимиты, пауза, флаги, MCP, токены',
154
+ en: '/status session state: dir, chat, limits, pause, toggles, MCP, tokens',
155
155
  },
156
156
  'help.cmd.reload': {
157
- ru: '/reload перечитать модули логики без перезапуска',
158
- en: '/reload hot-reload logic modules',
157
+ ru: '/reload перечитать модули логики (browser.ts и login — только после перезапуска)',
158
+ en: '/reload hot-reload logic modules (browser.ts and login need a restart)',
159
159
  },
160
160
  'help.cmd.undo': {
161
161
  ru: '/undo откатить последнюю запись/правку',
162
162
  en: '/undo revert the last write/edit',
163
163
  },
164
164
  'help.cmd.undo_list': {
165
- ru: '/undo-list список того, что можно откатить',
166
- en: '/undo-list list revertable changes',
165
+ ru: '/undo-list (/history) список того, что можно откатить',
166
+ en: '/undo-list (/history) list revertable changes',
167
167
  },
168
168
  'help.cmd.rewind': {
169
- ru: '/rewind [n] откатить рабочее дерево к чекпойнту',
170
- en: '/rewind [n] roll the working tree back to a checkpoint',
169
+ ru: '/rewind [n|<штамп>] [--yes] откатить рабочее дерево к чекпойнту (без аргумента — самая свежая; спросит подтверждение, --yes — без вопроса для скриптов)',
170
+ en: '/rewind [n|stamp] [--yes] roll the working tree back to a checkpoint (no argument = the newest; asks first, --yes skips the question for scripts)',
171
171
  },
172
172
  'help.cmd.rewind_list': {
173
- ru: '/rewind-list список чекпойнтов',
174
- en: '/rewind-list list checkpoints',
173
+ ru: '/rewind-list (/checkpoints) список чекпойнтов (штамп и каталог)',
174
+ en: '/rewind-list (/checkpoints) list checkpoints (stamp and directory)',
175
175
  },
176
176
  'help.cmd.transcript': {
177
177
  ru: '/transcript путь к файлу транскрипта',
178
178
  en: '/transcript transcript file path',
179
179
  },
180
180
  'help.cmd.diff': {
181
- ru: '/diff [--staged] показать git diff',
182
- en: '/diff [--staged] show working tree git diff',
181
+ ru: '/diff [--staged] показать git diff (--staged — изменения в индексе)',
182
+ en: '/diff [--staged] show git diff (--staged — staged changes)',
183
183
  },
184
184
  'help.cmd.diffstat': {
185
- ru: '/diffstat сводка изменений (git diff --stat)',
186
- en: '/diffstat change summary (git diff --stat)',
185
+ ru: '/diffstat [--staged] сводка изменений (git diff --stat)',
186
+ en: '/diffstat [--staged] change summary (git diff --stat)',
187
187
  },
188
188
  'help.cmd.retry': {
189
- ru: '/retry повторить последнюю задачу в этом чате',
190
- en: '/retry resend the last task into this chat',
189
+ ru: '/retry повторить последнюю задачу в этом чате (тот же чат, промпт не пересылается)',
190
+ en: '/retry resend the last task into this chat (same chat, no prompt resend)',
191
191
  },
192
192
  'help.cmd.rename': {
193
- ru: '/rename <title> задать имя текущей сессии',
194
- en: '/rename <title> set the current session title',
193
+ ru: '/rename <title> задать имя сессии в zames (чат на сайте не переименовывается)',
194
+ en: '/rename <title> set the session title in zames (the web chat is not renamed)',
195
195
  },
196
196
  'help.cmd.context': {
197
- ru: '/context что загружено в промпт (AGENTS/MEMORY/skills/commands)',
198
- en: '/context what is loaded into the prompt (AGENTS/MEMORY/skills/commands)',
197
+ ru: '/context что загружено в промпт (AGENTS/MEMORY/skills/commands), размеры и объём промпта',
198
+ en: '/context what the prompt loads (AGENTS/MEMORY/skills/commands), their sizes and the prompt size',
199
199
  },
200
200
  'help.cmd.copy': {
201
- ru: '/copy скопировать последний ответ в буфер обмена',
202
- en: '/copy copy the last answer to the clipboard',
201
+ ru: '/copy скопировать последний ответ в буфер обмена (нужна утилита: wl-copy/xclip/xsel, pbcopy, clip)',
202
+ en: '/copy copy the last answer to the clipboard (needs a clipboard tool: wl-copy/xclip/xsel, pbcopy, clip)',
203
+ },
204
+ 'help.cmd.cost': {
205
+ ru: '/cost (/usage) статистика сессии: задачи, инструменты, время, контекст',
206
+ en: '/cost (/usage) session stats: tasks, tools, time, context',
203
207
  },
204
- 'help.cmd.cost': { ru: '/cost статистика сессии', en: '/cost session stats' },
205
208
  'help.cmd.limits': {
206
- ru: '/limits телеметрия отправок и текущая пауза',
207
- en: '/limits send telemetry and the current pause',
209
+ ru: '/limits статистика отправок, лимитов и текущая пауза',
210
+ en: '/limits send, rate-limit and current-pause stats',
208
211
  },
209
212
  'help.cmd.export': {
210
- ru: '/export [file] выгрузить сессию в Markdown',
211
- en: '/export [file] export the session to Markdown',
213
+ ru: '/export [file] выгрузить сессию в Markdown (по умолчанию zames-export-<время>.md)',
214
+ en: '/export [file] export the session to Markdown (default zames-export-<stamp>.md)',
212
215
  },
213
216
  'help.cmd.doctor': {
214
- ru: '/doctor диагностика установки и конфига',
215
- en: '/doctor diagnose install and config',
217
+ ru: '/doctor диагностика: node, git, конфиг, браузер, буфер обмена, MCP, провайдер',
218
+ en: '/doctor diagnose node, git, config, browser, clipboard, MCP and the provider',
216
219
  },
217
220
  'help.cmd.add_dir': {
218
- ru: '/add-dir <path> проверить директорию',
219
- en: '/add-dir <path> validate a directory',
221
+ ru: '/add-dir <path> проверить директорию (только проверка — песочницу не меняет)',
222
+ en: '/add-dir <path> validate a directory (check only — the sandbox is unchanged)',
220
223
  },
221
224
  'help.cmd.review': {
222
- ru: '/review [focus] ревью незакоммиченных изменений',
223
- en: '/review [focus] review uncommitted changes',
225
+ ru: '/review [фокус] [--staged] ревью изменений агентом (без правок; --staged — индекс)',
226
+ en: '/review [focus] [--staged] agent review of the changes (no edits; --staged — the index)',
224
227
  },
225
228
  'help.cmd.improve': {
226
229
  ru: '/improve [id] взять следующий пункт BACKLOG и довести до тестов',
@@ -247,8 +250,8 @@ export const helpMessages = {
247
250
  en: 'BACKLOG collapsed: {n} archived block(s) removed.',
248
251
  },
249
252
  'help.cmd.backlog': {
250
- ru: '/backlog <текст> записать идею в BACKLOG.md',
251
- en: '/backlog <text> record an idea in BACKLOG.md',
253
+ ru: '/backlog <текст> записать идею в BACKLOG.md (collapse — свернуть архив)',
254
+ en: '/backlog <text> record an idea in BACKLOG.md (collapse — prune archive)',
252
255
  },
253
256
  'backlog.usage': {
254
257
  ru: 'Использование: /backlog <текст идеи>',
@@ -271,60 +274,63 @@ export const helpMessages = {
271
274
  en: 'Nothing to collapse: there are no archived blocks.',
272
275
  },
273
276
  'help.cmd.compact': {
274
- ru: '/compact сжать историю и открыть новый чат с резюме',
275
- en: '/compact compact the history and open a new chat with the summary',
277
+ ru: '/compact сжать историю в резюме и продолжить в НОВОМ чате (старый остаётся)',
278
+ en: '/compact summarize the history and continue in a NEW chat (the old one stays)',
276
279
  },
277
280
  'help.cmd.queue': {
278
- ru: '/queue [clear] показать/очистить очередь сообщений',
279
- en: '/queue [clear] list/clear the pending message queue',
281
+ ru: '/queue [list|ls|clear|c|clean] очередь сообщений, ждущих отправки: показать (list/ls) или очистить (clear/c/clean); можно во время работы',
282
+ en: '/queue [list|ls|clear|c|clean] messages waiting to be sent: list (list/ls) or clear (clear/c/clean); works while the agent is busy',
280
283
  },
281
284
  'help.cmd.tasks': {
282
- ru: '/tasks список задач агента (TodoWrite)',
283
- en: '/tasks the agent task list (TodoWrite)',
285
+ ru: '/tasks текущий чек-лист агента (TodoWrite): статусы шагов (можно во время работы)',
286
+ en: "/tasks the agent's current checklist (TodoWrite): step statuses (works while the agent is busy)",
284
287
  },
285
288
  'help.cmd.thinking': {
286
- ru: '/thinking [on|off] включить/выключить режим размышления (можно во время работы)',
287
- en: '/thinking [on|off] toggle Deep thinking (works while the agent is busy)',
289
+ ru: '/thinking [on|off] режим размышления: DeepSeek/Qwen — тумблер, GLM — всегда включён (можно во время работы)',
290
+ en: '/thinking [on|off] reasoning mode: a toggle on DeepSeek/Qwen, always on for GLM (works while busy)',
288
291
  },
289
292
  'help.cmd.web': {
290
- ru: '/web [on|off] включить/выключить поиск в интернете (можно во время работы)',
291
- en: '/web [on|off] toggle Smart search (works while the agent is busy)',
293
+ ru: '/web [on|off] (также /websearch) поиск в интернете: DeepSeek — «Smart search», Qwen — пункт «Web search» (можно во время работы)',
294
+ en: '/web [on|off] (also /websearch) web search: DeepSeek "Smart search", Qwen the "Web search" menu item (works while busy)',
292
295
  },
293
296
  'help.cmd.goal': {
294
- ru: '/goal <условие> задать условие завершения; агент работает, пока оно не выполнено (снимается автоматически)',
295
- en: '/goal <condition> set a completion condition; the agent works until it is met (auto-cleared)',
297
+ ru: '/goal <условие> задать цель (работает, пока не выполнена; clear/off — снять, без аргумента или on — показать)',
298
+ en: '/goal <condition> set the goal (runs until met; clear/off — drop, no argument or on — show it)',
296
299
  },
297
300
  'help.cmd.plan': {
298
- ru: '/plan [on|off] режим плана: только чтение, без правок и команд',
299
- en: '/plan [on|off] plan mode: read-only, no edits or commands',
301
+ ru: '/plan [on|off] режим плана (чтение без правок); без аргумента — переключить',
302
+ en: '/plan [on|off] plan mode (read-only); no argument toggles it',
300
303
  },
301
304
  'plan.on': {
302
- ru: 'Режим плана ВКЛ: доступны только инструменты чтения. Правки и команды запрещены. /plan off — выключить.',
303
- en: 'Plan mode ON: only read tools are available. Edits and commands are disabled. /plan off to disable.',
305
+ ru: 'Режим плана ВКЛ: доступны только инструменты чтения. Правки, команды и MCP-инструменты с мутирующим именем запрещены. /plan off — выключить.',
306
+ en: 'Plan mode ON: only read tools are available. Edits, commands and MCP tools with a mutating name are disabled. /plan off to disable.',
304
307
  },
305
308
  'plan.off': {
306
309
  ru: 'Режим плана ВЫКЛ: агент снова может писать и запускать команды.',
307
310
  en: 'Plan mode OFF: the agent can edit and run commands again.',
308
311
  },
312
+ // BOTH accepted values produce the SAME wire format: JSON Lines, one
313
+ // event per line (there is no single-document mode). `jsonl` is the
314
+ // canonical name, `json` a synonym kept for convenience.
309
315
  'help.opt.output_format': {
310
- ru: 'формат вывода: text|json|jsonl (для скриптов)',
311
- en: 'output format: text|json|jsonl (for scripts)',
316
+ ru: 'поток событий в stdout как JSON Lines — по одному событию на строку (jsonl — каноничное имя, json — его синоним; человеческий текст — в stderr)',
317
+ en: 'event stream on stdout as JSON Lines, one event per line (jsonl is the canonical name, json a synonym; human text goes to stderr)',
312
318
  },
313
319
  'help.opt.plan': {
314
320
  ru: 'стартовать в режиме плана (только чтение)',
315
321
  en: 'start in plan mode (read-only)',
316
322
  },
317
323
  'help.cmd.loop': {
318
- ru: '/loop <интервал> <задача> периодически повторять задачу (напр. 10m)',
319
- en: '/loop <interval> <task> repeat a task periodically (e.g. 10m)',
324
+ ru: '/loop <интервал> <задача> повторять задачу (s/m/h; без единицы — секунды; первый запуск сразу; минимум 15с)',
325
+ en: '/loop <interval> <task> repeat a task (s/m/h; no unit means seconds; the first run is immediate; minimum 15s)',
320
326
  },
321
327
  'help.cmd.cron': {
322
- ru: '/cron <выражение> <задача> запускать по расписанию (5 полей)',
323
- en: '/cron <expr> <task> schedule a task (5-field cron)',
328
+ ru: '/cron "<мин> <час> <день> <мес> <дow>" <задача> запуск по расписанию (5 полей; первый — только после наступления времени)',
329
+ en: '/cron "<min> <hour> <dom> <month> <dow>" <task> schedule a task (5 fields; the first run waits for the schedule)',
324
330
  },
325
331
  'help.cmd.jobs': {
326
- ru: '/jobs [rm <id>|clear] список/удаление запланированных задач',
327
- en: '/jobs [rm <id>|clear] list/remove scheduled tasks',
332
+ ru: '/jobs [rm <id>|clear] список запланированных задач; rm <id> — удалить, clear — снять все',
333
+ en: '/jobs [rm <id>|clear] list scheduled jobs; rm <id> removes one, clear removes all',
328
334
  },
329
335
  'sched.loop_usage': {
330
336
  ru: 'Использование: /loop <интервал> <задача>, например /loop 10m проверь тесты',
@@ -338,9 +344,12 @@ export const helpMessages = {
338
344
  ru: 'Интервал «{v}» не распознан — задача НЕ добавлена. Единицы: s/sec, m/min, h (например, /loop 10m проверь тесты). Без единицы — СЕКУНДЫ (120 = 120с), для минут нужен суффикс m.',
339
345
  en: 'Interval "{v}" was not recognized — NO job was added. Units: s/sec, m/min, h (e.g. /loop 10m run the tests). Without a unit it means SECONDS (120 = 120s); use the m suffix for minutes.',
340
346
  },
347
+ // The floor is zames' OWN (MIN_LOOP_MS), not the provider throttle: that
348
+ // one is 15s on DeepSeek, 4s on Qwen and 0 on GLM, so quoting a single
349
+ // number here was wrong on two of the three backends.
341
350
  'sched.loop_too_short': {
342
- ru: 'Слишком часто: минимум {min} (троттлинг отправок 15с).',
343
- en: 'Too frequent: minimum {min} (the send throttle is 15s).',
351
+ ru: 'Слишком часто: минимальный интервал /loop — {min} (реже — бессмысленно: отправка всё равно ждёт троттлинга провайдера).',
352
+ en: 'Too frequent: the minimum /loop interval is {min} (anything faster is pointless: sending still waits for the provider throttle).',
344
353
  },
345
354
  'sched.added': {
346
355
  ru: '⏰ Задача #{id} добавлена ({when}): {task}',
@@ -453,24 +462,24 @@ export const helpMessages = {
453
462
  en: 'Directory exists: {v}. Check only — the sandbox is fixed at startup, access is NOT granted (relaunch with --dir to work there).',
454
463
  },
455
464
  'help.cmd.config': {
456
- ru: '/config настройки: показать и изменить',
457
- en: '/config settings: view and edit',
465
+ ru: '/config [menu|list|show|ls|get|set|reset|unset|path|paths|lang|language] настройки: меню или подкоманды (пишет в домашний конфиг)',
466
+ en: '/config [menu|list|show|ls|get|set|reset|unset|path|paths|lang|language] settings: menu or subcommands (writes the home config)',
458
467
  },
459
468
  'help.cmd.lang': {
460
469
  ru: '/config lang <ru|en> сменить язык интерфейса и агента',
461
470
  en: '/config lang <ru|en> switch UI and agent language',
462
471
  },
463
472
  'help.cmd.provider': {
464
- ru: '/provider <id> переключить провайдера чата',
465
- en: '/provider <id> switch the chat provider',
473
+ ru: '/provider <id> | status | login — сменить бэкенд (сразу), показать состояние или повторить вход',
474
+ en: '/provider <id> | status | login — switch the backend (live), show the state or re-run the sign-in',
466
475
  },
467
476
  'help.cmd.model': {
468
- ru: '/model [id] показать/выбрать модель провайдера',
469
- en: '/model [id] show/pick the provider model',
477
+ ru: '/model [id] список моделей или выбор по id (Qwen/GLM; в TUI — список выбора)',
478
+ en: '/model [id] list models or pick one by id (Qwen/GLM; the TUI shows a pick list)',
470
479
  },
471
480
  'help.cmd.debug_dom': {
472
- ru: '/debug-dom сохранить HTML страницы (для отладки)',
473
- en: '/debug-dom dump page HTML (debug)',
481
+ ru: '/debug-dom сохранить HTML страницы и найденные селекторы в ~/.zames/logs',
482
+ en: '/debug-dom dump page HTML and matched selectors to ~/.zames/logs',
474
483
  },
475
484
  'help.no_topic': {
476
485
  ru: 'Нет команды по запросу «{v}». Попробуй /help без аргумента.',
@@ -522,20 +531,20 @@ export const helpMessages = {
522
531
  'help.cmd.skill': { ru: 'навык (SKILL.md)', en: 'skill (SKILL.md)' },
523
532
  'help.cmd.custom': { ru: 'пользовательская команда', en: 'custom command' },
524
533
  'help.cmd.skills': {
525
- ru: '/skills список найденных навыков',
526
- en: '/skills list discovered skills',
534
+ ru: '/skills список навыков: имя, источник, описание, путь',
535
+ en: '/skills list skills: name, source, description, path',
527
536
  },
528
537
  'help.cmd.memory': {
529
- ru: '/memory показать MEMORY.md и AGENTS.md',
530
- en: '/memory show MEMORY.md and AGENTS.md',
538
+ ru: '/memory какие AGENTS.md и MEMORY.md реально загружены (пути)',
539
+ en: '/memory which AGENTS.md and MEMORY.md are loaded (paths)',
531
540
  },
532
541
  'help.cmd.remember': {
533
- ru: '/remember <текст> дописать заметку в MEMORY.md',
534
- en: '/remember <text> append a note to MEMORY.md',
542
+ ru: '/remember <текст> дописать заметку в MEMORY.md проекта (создаст файл)',
543
+ en: '/remember <text> append a note to the project MEMORY.md (creates it)',
535
544
  },
536
545
  'help.cmd.init': {
537
- ru: '/init [--force] изучить проект и создать AGENTS.md',
538
- en: '/init [--force] analyze the project and create AGENTS.md',
546
+ ru: '/init [--force] агент изучит проект и напишет AGENTS.md (--force — перезаписать)',
547
+ en: '/init [--force] the agent explores the repo and writes AGENTS.md (--force — overwrite)',
539
548
  },
540
549
  'help.skills': {
541
550
  ru: 'Навыки и свои команды:',