zames_pro 2.82.140 → 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.
- package/CHANGELOG.md +50 -0
- package/README.md +68 -42
- package/SECURITY.md +6 -3
- package/dist/browser.js +8 -2
- package/dist/commands.js +5 -1
- package/dist/compact.js +6 -1
- package/dist/context.js +27 -9
- package/dist/i18n/common.js +16 -11
- package/dist/i18n/config.js +2 -2
- package/dist/i18n/deepseek.js +2 -2
- package/dist/i18n/doctor.js +9 -5
- package/dist/i18n/glm.js +2 -2
- package/dist/i18n/help.js +126 -117
- package/dist/i18n/mcp.js +11 -5
- package/dist/i18n/prompt.js +9 -3
- package/dist/i18n/qwen.js +2 -2
- package/dist/i18n/self-review.js +4 -0
- package/dist/i18n/spinner.js +13 -8
- package/dist/index.js +8 -5
- package/dist/mcp.js +4 -1
- package/dist/prompt.js +16 -1
- package/dist/status-command.js +6 -2
- package/dist/system-prompt.js +8 -0
- package/dist/tui/AskQuestion.js +1 -1
- package/dist/tui/TuiEditor.js +7 -0
- package/dist/tui/widgets.js +4 -2
- package/llms-full.txt +35 -22
- package/llms.txt +4 -2
- package/package.json +2 -2
- package/skills/systematic-debugging/SKILL.md +7 -0
- package/skills/test-driven-development/SKILL.md +5 -0
- package/skills/verification-before-completion/SKILL.md +5 -0
- package/skills/writing-plans/SKILL.md +12 -0
package/dist/i18n/doctor.js
CHANGED
|
@@ -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
|
|
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:
|
|
8
|
-
en: 'GLM:
|
|
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
|
|
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
|
|
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
|
|
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 —
|
|
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: '
|
|
86
|
-
en: '
|
|
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+
|
|
94
|
-
en: 'Ctrl+
|
|
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 Esc — прервать генерацию; Ctrl+C — прервать инструмент, второй раз — весь
|
|
98
|
-
en: 'Esc, Ctrl+C Esc — abort generation; Ctrl+C — abort the tool, twice — the whole run',
|
|
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
|
|
102
|
-
en: 'PgUp / PgDn
|
|
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 (
|
|
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]
|
|
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>
|
|
130
|
-
en: '/resume-id <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:
|
|
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
|
|
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]
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 [
|
|
223
|
-
en: '/review [focus] review
|
|
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
|
|
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
|
|
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
|
|
283
|
-
en:
|
|
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
|
|
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]
|
|
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
|
|
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
|
|
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: 'Режим плана ВКЛ: доступны только инструменты чтения.
|
|
303
|
-
en: 'Plan mode ON: only read tools are available. Edits and
|
|
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: '
|
|
311
|
-
en: '
|
|
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 <интервал> <задача>
|
|
319
|
-
en: '/loop <interval> <task> repeat a task
|
|
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
|
|
323
|
-
en: '/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
|
|
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: 'Слишком часто:
|
|
343
|
-
en: 'Too frequent: minimum {min} (the
|
|
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
|
|
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>
|
|
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]
|
|
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
|
|
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
|
|
534
|
+
ru: '/skills список навыков: имя, источник, описание, путь',
|
|
535
|
+
en: '/skills list skills: name, source, description, path',
|
|
527
536
|
},
|
|
528
537
|
'help.cmd.memory': {
|
|
529
|
-
ru: '/memory
|
|
530
|
-
en: '/memory
|
|
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]
|
|
538
|
-
en: '/init [--force]
|
|
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: 'Навыки и свои команды:',
|
package/dist/i18n/mcp.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// MCP server messages.
|
|
2
2
|
export const mcpMessages = {
|
|
3
3
|
'help.cmd.mcp': {
|
|
4
|
-
ru: '/mcp
|
|
5
|
-
en: '/mcp
|
|
4
|
+
ru: '/mcp MCP-серверы: число инструментов, ошибки и предупреждения',
|
|
5
|
+
en: '/mcp MCP servers: tool count, errors and warnings',
|
|
6
6
|
},
|
|
7
7
|
'mcp.loaded': {
|
|
8
8
|
ru: 'MCP: подключено инструментов {n} ({servers})',
|
|
@@ -21,15 +21,21 @@ export const mcpMessages = {
|
|
|
21
21
|
en: 'No MCP servers configured.',
|
|
22
22
|
},
|
|
23
23
|
'mcp.hint': {
|
|
24
|
-
ru: 'Добавь ~/.zames/mcp.json
|
|
25
|
-
en: 'Add ~/.zames/mcp.json
|
|
24
|
+
ru: 'Добавь ~/.zames/mcp.json, <project>/.zames/mcp.json или <project>/.mcp.json.',
|
|
25
|
+
en: 'Add ~/.zames/mcp.json, <project>/.zames/mcp.json or <project>/.mcp.json.',
|
|
26
26
|
},
|
|
27
27
|
'mcp.title': {
|
|
28
28
|
ru: 'MCP-серверы (инструментов: {n}):',
|
|
29
29
|
en: 'MCP servers ({n} tools):',
|
|
30
30
|
},
|
|
31
|
+
'mcp.floating': {
|
|
32
|
+
ru: 'MCP-сервер «{v}» использует плавающую версию (@latest/@next); закрепите точную версию, чтобы набор инструментов не менялся между запусками.',
|
|
33
|
+
en: 'MCP server "{v}" uses a floating version (@latest/@next); pin an exact version so the tool set does not change between runs.',
|
|
34
|
+
},
|
|
31
35
|
'mcp.status_error': { ru: '(ошибка: {v})', en: '(error: {v})' },
|
|
32
|
-
|
|
36
|
+
// `{v}` is a COUNT (or 'unknown' when no pool is configured) — not a
|
|
37
|
+
// list of tool names, so the label must not read as one.
|
|
38
|
+
'status.mcp': { ru: 'MCP-инструментов: {v}', en: 'MCP tools: {v}' },
|
|
33
39
|
'status.toggles': {
|
|
34
40
|
ru: 'Размышление: {think} · Поиск: {search}',
|
|
35
41
|
en: 'Deep thinking: {think} · Search: {search}',
|
package/dist/i18n/prompt.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
// System-prompt fragments.
|
|
2
2
|
export const promptMessages = {
|
|
3
|
+
// AGENT-FACING: the model reads this, so neither locale may carry Cyrillic
|
|
4
|
+
// prose (see AGENTS.md "Language policy"). Only the LANGUAGE NAME differs,
|
|
5
|
+
// which is what actually steers the answer language.
|
|
3
6
|
'prompt.answer_language': {
|
|
4
|
-
ru: '
|
|
5
|
-
en: 'IMPORTANT:
|
|
7
|
+
ru: 'IMPORTANT: answer the operator in Russian. All text in the message field of the respond tool, and any explanations, must be in Russian.',
|
|
8
|
+
en: 'IMPORTANT: answer the operator in English. All text in the message field of the respond tool, and any explanations, must be in English.',
|
|
6
9
|
},
|
|
7
10
|
// The hard "ONLY TOOL CALLS" block. All prose around a tool call is a
|
|
8
11
|
// protocol violation: the operator never sees it (only tool calls and the
|
|
@@ -10,7 +13,10 @@ export const promptMessages = {
|
|
|
10
13
|
// stop DeepSeek from generating it INSIDE its chat with code (that is the
|
|
11
14
|
// model's output); we can only forbid it by prompt and hide it here.
|
|
12
15
|
'prompt.only_tool_calls': {
|
|
13
|
-
|
|
16
|
+
// AGENT-FACING: the model reads this, so BOTH locales carry the English
|
|
17
|
+
// text (see AGENTS.md "Language policy"): a Russian operator still gets an
|
|
18
|
+
// English protocol block, and the answer LANGUAGE is set separately above.
|
|
19
|
+
ru: '## ONLY TOOL CALLS (hard rule)\n\nTalk to the operator ONLY through tool calls. Any plain text — explanations, plans, reasoning, comments, apologies, greetings, headings, lists, markdown, emoji — is FORBIDDEN. It is not read and counts as an error.\n\nYOUR ONLY OUTPUT is a tool call. Each turn contains exactly one JSON tool-call object (or an array of independent calls), with not a single word before or after.\n\nYou MUST NOT write: "I will now...", "let us look...", "let me check", plans, explanations, progress notes between steps.\n\nALLOWED: only a tool call and, at the very end, when the task is done, respond with the summary.\n\nThe only place where text is allowed is the message field inside respond, and only at the very end.',
|
|
14
20
|
en: '## ONLY TOOL CALLS (hard rule)\n\nTalk to the operator ONLY through tool calls. Any plain text — explanations, plans, reasoning, comments, apologies, greetings, headings, lists, markdown, emoji — is FORBIDDEN. It is not read and counts as an error.\n\nYOUR ONLY OUTPUT is a tool call. Each turn contains exactly one JSON tool-call object (or an array of independent calls), with not a single word before or after.\n\nYou MUST NOT write: "I will now...", "let us look...", "let me check", plans, explanations, progress notes between steps.\n\nALLOWED: only a tool call and, at the very end, when the task is done, respond with the summary.\n\nThe only place where text is allowed is the message field inside respond, and only at the very end.',
|
|
15
21
|
},
|
|
16
22
|
};
|
package/dist/i18n/qwen.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
// so provider-specific wording has one home.
|
|
4
4
|
export const qwenMessages = {
|
|
5
5
|
'qwen.guest_mode': {
|
|
6
|
-
ru: 'Qwen: вход не выполнен, работаю в гостевом режиме (
|
|
7
|
-
en: 'Qwen: not signed in, running in guest mode (
|
|
6
|
+
ru: 'Qwen: вход не выполнен, работаю в гостевом режиме (суточная квота гостя ограничена, вложения недоступны). Войдите через /provider login (он сам откроет видимое окно) или запустите с --headed.',
|
|
7
|
+
en: 'Qwen: not signed in, running in guest mode (the guest daily quota is limited, attachments are unavailable). Log in via /provider login (it opens a visible window itself) or launch with --headed.',
|
|
8
8
|
},
|
|
9
9
|
'qwen.login_email_prompt': {
|
|
10
10
|
ru: 'Email для входа в Qwen{def}: ',
|
package/dist/i18n/self-review.js
CHANGED
|
@@ -177,6 +177,10 @@ export const selfReviewMessages = {
|
|
|
177
177
|
ru: 'Сохранённых сессий нет. Они появятся после первой задачи/чата.',
|
|
178
178
|
en: 'No saved sessions. They appear after the first task/chat.',
|
|
179
179
|
},
|
|
180
|
+
'sessions.none_here': {
|
|
181
|
+
ru: 'Для этого каталога сохранённых сессий нет — сначала выполните здесь задачу.',
|
|
182
|
+
en: 'No saved session for this directory — run a task here first.',
|
|
183
|
+
},
|
|
180
184
|
'sessions.restore_hint': {
|
|
181
185
|
ru: 'Восстановить: /resume-id <id> (полный id) или выбери сессию в списке /sessions.',
|
|
182
186
|
en: 'Restore: /resume-id <id> (full id) or pick a session from the /sessions list.',
|