zames_pro 2.64.1 → 2.65.1
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 +58 -0
- package/README.md +7 -12
- package/dist/backlog.js +20 -0
- package/dist/browser.js +15 -0
- package/dist/commands.js +81 -0
- package/dist/config-menu.js +70 -33
- package/dist/i18n/common.js +362 -0
- package/dist/i18n/config.js +199 -0
- package/dist/i18n/deepseek.js +194 -0
- package/dist/i18n/doctor.js +127 -0
- package/dist/i18n/help.js +552 -0
- package/dist/i18n/mcp.js +41 -0
- package/dist/i18n/prompt.js +20 -0
- package/dist/i18n/self-review.js +198 -0
- package/dist/i18n/spinner.js +36 -0
- package/dist/i18n.js +21 -1724
- package/dist/index.js +39 -503
- package/dist/input/layout.js +314 -0
- package/dist/input.js +88 -292
- package/dist/run-task.js +451 -0
- package/dist/spinner.js +5 -5
- package/package.json +2 -2
- package/scripts/render-demo.mjs +153 -0
- package/logo.jpg +0 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
// Self-review and chats/sessions messages.
|
|
2
|
+
export const selfReviewMessages = {
|
|
3
|
+
'self.review_failed': {
|
|
4
|
+
ru: 'Самообзор провалился:',
|
|
5
|
+
en: 'Self-review failed:',
|
|
6
|
+
},
|
|
7
|
+
'self.fix_usage': {
|
|
8
|
+
ru: 'Использование: /self-fix <name> [фокус]',
|
|
9
|
+
en: 'Usage: /self-fix <name> [focus]',
|
|
10
|
+
},
|
|
11
|
+
'self.snapshot_not_found': {
|
|
12
|
+
ru: 'Снапшот не найден: {v}',
|
|
13
|
+
en: 'Snapshot not found: {v}',
|
|
14
|
+
},
|
|
15
|
+
'self.init_review_chat': {
|
|
16
|
+
ru: 'Инициализирую review-чат для снапшота...',
|
|
17
|
+
en: 'Initializing review chat for the snapshot...',
|
|
18
|
+
},
|
|
19
|
+
'self.enter_failed': {
|
|
20
|
+
ru: 'Не удалось войти в снапшот:',
|
|
21
|
+
en: 'Failed to enter the snapshot:',
|
|
22
|
+
},
|
|
23
|
+
'self.not_in_review': {
|
|
24
|
+
ru: 'Ты и так не в режиме ревью.',
|
|
25
|
+
en: 'You are not in review mode.',
|
|
26
|
+
},
|
|
27
|
+
'self.diff_usage': {
|
|
28
|
+
ru: 'Использование: /self-diff <name>',
|
|
29
|
+
en: 'Usage: /self-diff <name>',
|
|
30
|
+
},
|
|
31
|
+
'self.apply_usage': {
|
|
32
|
+
ru: 'Использование: /self-apply <name>',
|
|
33
|
+
en: 'Usage: /self-apply <name>',
|
|
34
|
+
},
|
|
35
|
+
'self.no_src': {
|
|
36
|
+
ru: 'Самообзор отменён: в {dir} нет .ts файлов. Проверь, что src/ не пуст и ты запускаешь агента из корня проекта.',
|
|
37
|
+
en: 'Self-review aborted: no .ts files in {dir}. Check that src/ is not empty and you run the agent from the project root.',
|
|
38
|
+
},
|
|
39
|
+
'self.no_src_err': {
|
|
40
|
+
ru: 'SRC_DIR пуст — нечего ревьюить',
|
|
41
|
+
en: 'SRC_DIR is empty - nothing to review',
|
|
42
|
+
},
|
|
43
|
+
'self.snapshot': { ru: '📸 Снапшот: {dir}', en: '📸 Snapshot: {dir}' },
|
|
44
|
+
'self.files': { ru: 'Файлов: {n} — {list}', en: 'Files: {n} — {list}' },
|
|
45
|
+
'self.starting': {
|
|
46
|
+
ru: 'Начинаю самообзор...',
|
|
47
|
+
en: 'Starting self-review...',
|
|
48
|
+
},
|
|
49
|
+
'self.report': { ru: '📋 Отчёт:', en: '📋 Report:' },
|
|
50
|
+
'self.report_empty': { ru: '(пусто)', en: '(empty)' },
|
|
51
|
+
'self.report_path': { ru: 'Отчёт: {v}', en: 'Report: {v}' },
|
|
52
|
+
'self.snapshot_path': { ru: 'Снапшот: {v}', en: 'Snapshot: {v}' },
|
|
53
|
+
'self.changed': {
|
|
54
|
+
ru: 'Изменено: {n} файл(ов): {list}',
|
|
55
|
+
en: 'Changed: {n} file(s): {list}',
|
|
56
|
+
},
|
|
57
|
+
'self.changed_none': {
|
|
58
|
+
ru: 'Изменено: (ничего — только отчёт)',
|
|
59
|
+
en: 'Changed: (nothing - report only)',
|
|
60
|
+
},
|
|
61
|
+
'self.next': { ru: 'Дальше:', en: 'Next:' },
|
|
62
|
+
'self.diff_hint': {
|
|
63
|
+
ru: ' /self-diff {name} — посмотреть различия',
|
|
64
|
+
en: ' /self-diff {name} — view the diff',
|
|
65
|
+
},
|
|
66
|
+
'self.apply_hint': {
|
|
67
|
+
ru: ' /self-apply {name} — применить к живому src/',
|
|
68
|
+
en: ' /self-apply {name} — apply to the live src/',
|
|
69
|
+
},
|
|
70
|
+
'self.no_diff': { ru: 'Различий нет.', en: 'No differences.' },
|
|
71
|
+
'self.apply_no_ts': {
|
|
72
|
+
ru: 'В снапшоте {dir} нет .ts файлов. Apply отменён, чтобы не стирать src/.',
|
|
73
|
+
en: 'Snapshot {dir} has no .ts files. Apply aborted to avoid wiping src/.',
|
|
74
|
+
},
|
|
75
|
+
'self.applied': {
|
|
76
|
+
ru: '✅ Применено: {n} файл(ов)',
|
|
77
|
+
en: '✅ Applied: {n} file(s)',
|
|
78
|
+
},
|
|
79
|
+
'self.backup': { ru: 'Бэкап: {dir}', en: 'Backup: {dir}' },
|
|
80
|
+
'self.restart_hint': {
|
|
81
|
+
ru: 'Перезапусти агента, чтобы изменения вступили в силу.',
|
|
82
|
+
en: 'Restart the agent for the changes to take effect.',
|
|
83
|
+
},
|
|
84
|
+
'self.no_snapshots': { ru: 'Снапшотов нет.', en: 'No snapshots.' },
|
|
85
|
+
'self.list_title': {
|
|
86
|
+
ru: 'Снапшоты самообзора:',
|
|
87
|
+
en: 'Self-review snapshots:',
|
|
88
|
+
},
|
|
89
|
+
'self.list_changed': { ru: '[{n} изменено]', en: '[{n} changed]' },
|
|
90
|
+
'self.list_unchanged': { ru: '[без правок]', en: '[no changes]' },
|
|
91
|
+
'self.list_commands': {
|
|
92
|
+
ru: 'Команды: /self-diff <name>, /self-apply <name>',
|
|
93
|
+
en: 'Commands: /self-diff <name>, /self-apply <name>',
|
|
94
|
+
},
|
|
95
|
+
'self.fix_hint': {
|
|
96
|
+
ru: '\n💡 Режим ревью по снапшоту {name}. Пиши агенту задачу или /self-done.\n',
|
|
97
|
+
en: '\n💡 Review mode on snapshot {name}. Send the agent a task or /self-done.\n',
|
|
98
|
+
},
|
|
99
|
+
'self.done_hint': {
|
|
100
|
+
ru: 'Вернулся в {v}. Следующая задача начнёт новый чат.\n',
|
|
101
|
+
en: 'Back to {v}. The next task will start a new chat.\n',
|
|
102
|
+
},
|
|
103
|
+
'self.review_hint': {
|
|
104
|
+
ru: '\n💡 Теперь ты в режиме ревью. Просто пиши агенту, например:\n «исправь ошибки»\n «доработай обработку ошибок в ask()»\n «покажи, что не так с undo»\nВыйти: /self-done. Применить: /self-apply {name}\n',
|
|
105
|
+
en: '\n💡 You are now in review mode. Just ask the agent, e.g.:\n "fix the errors"\n "improve error handling in ask()"\n "show what is wrong with undo"\nExit: /self-done. Apply: /self-apply {name}\n',
|
|
106
|
+
},
|
|
107
|
+
'chats.recent': {
|
|
108
|
+
ru: 'Последние чаты DeepSeek:',
|
|
109
|
+
en: 'Recent DeepSeek chats:',
|
|
110
|
+
},
|
|
111
|
+
'chats.use_resume': {
|
|
112
|
+
ru: '\nИспользуй /resume <n> для продолжения.\n',
|
|
113
|
+
en: '\nUse /resume <n> to continue.\n',
|
|
114
|
+
},
|
|
115
|
+
'chats.none': { ru: 'Чатов не найдено.', en: 'No chats found.' },
|
|
116
|
+
'chats.none_hint': {
|
|
117
|
+
ru: 'Чатов не найдено. Возможно, сайдбар свёрнут или селекторы устарели.',
|
|
118
|
+
en: 'No chats found. The sidebar may be collapsed or the selectors are outdated.',
|
|
119
|
+
},
|
|
120
|
+
'chats.fetch_error': {
|
|
121
|
+
ru: 'Не удалось получить список:',
|
|
122
|
+
en: 'Failed to fetch the list:',
|
|
123
|
+
},
|
|
124
|
+
'chats.prompt_no_resend': {
|
|
125
|
+
ru: ' Системный промпт НЕ пересылается (он уже в начале чата). Включить: /config set browser.resendPromptOnResume true.\n',
|
|
126
|
+
en: ' The system prompt is NOT resent (it is already at the start of the chat). Enable: /config set browser.resendPromptOnResume true.\n',
|
|
127
|
+
},
|
|
128
|
+
'chats.resume_usage': {
|
|
129
|
+
ru: 'Использование: /resume <n> (или /chats для списка)',
|
|
130
|
+
en: 'Usage: /resume <n> (or /chats for the list)',
|
|
131
|
+
},
|
|
132
|
+
'chats.need_number': {
|
|
133
|
+
ru: 'Нужен номер из /chats.',
|
|
134
|
+
en: 'A number from /chats is required.',
|
|
135
|
+
},
|
|
136
|
+
'chats.run_chats_first': {
|
|
137
|
+
ru: 'Сначала выполни /chats.',
|
|
138
|
+
en: 'Run /chats first.',
|
|
139
|
+
},
|
|
140
|
+
'chats.no_n': {
|
|
141
|
+
ru: 'Нет чата №{n}. Всего: {total}.',
|
|
142
|
+
en: 'No chat #{n}. Total: {total}.',
|
|
143
|
+
},
|
|
144
|
+
'chats.opening': { ru: 'Открываю: {v}', en: 'Opening: {v}' },
|
|
145
|
+
'chats.context_kept': {
|
|
146
|
+
ru: ' Контекст чата сохранён. Системный промпт будет переслан на следующей задаче.\n',
|
|
147
|
+
en: ' Chat context kept. The system prompt will be resent on the next task.\n',
|
|
148
|
+
},
|
|
149
|
+
'chats.prompt_will_resend': {
|
|
150
|
+
ru: ' Системный промпт будет переслан на следующей задаче.\n',
|
|
151
|
+
en: ' System prompt will be resent on the next task.\n',
|
|
152
|
+
},
|
|
153
|
+
'chats.current_id': {
|
|
154
|
+
ru: 'Текущий chat id: {v}',
|
|
155
|
+
en: 'Current chat id: {v}',
|
|
156
|
+
},
|
|
157
|
+
'chats.not_created': { ru: 'Чат ещё не создан.', en: 'No chat created yet.' },
|
|
158
|
+
'chats.history_title': { ru: 'Диалог чата:', en: 'Chat dialogue:' },
|
|
159
|
+
'chats.history_near_limit': {
|
|
160
|
+
ru: '⚠ Контекст чата заполнен на {pct}% — рекомендую /compact.',
|
|
161
|
+
en: '⚠ The chat context is {pct}% full — /compact is recommended.',
|
|
162
|
+
},
|
|
163
|
+
'chats.history_tokens': {
|
|
164
|
+
ru: 'Контекст чата: ~{v} токенов',
|
|
165
|
+
en: 'Chat context: ~{v} tokens',
|
|
166
|
+
},
|
|
167
|
+
'chats.history_empty': {
|
|
168
|
+
ru: 'Диалог пуст или не удалось прочитать сообщения.',
|
|
169
|
+
en: 'The dialogue is empty or the messages could not be read.',
|
|
170
|
+
},
|
|
171
|
+
'chats.history_service_only': {
|
|
172
|
+
ru: 'В этом чате нет пользовательских реплик — только служебные сообщения агента (вызовы инструментов).',
|
|
173
|
+
en: 'This chat has no user turns — only the agent service messages (tool calls).',
|
|
174
|
+
},
|
|
175
|
+
'chats.history_truncated': {
|
|
176
|
+
ru: '… показаны последние {n} сообщений.',
|
|
177
|
+
en: '… showing the last {n} messages.',
|
|
178
|
+
},
|
|
179
|
+
'chats.history_you': { ru: 'Вы', en: 'You' },
|
|
180
|
+
'chats.history_agent': { ru: 'Агент', en: 'Agent' },
|
|
181
|
+
'time.now': { ru: 'только что', en: 'just now' },
|
|
182
|
+
'time.min_ago': { ru: '{n} мин назад', en: '{n}m ago' },
|
|
183
|
+
'time.hour_ago': { ru: '{n} ч назад', en: '{n}h ago' },
|
|
184
|
+
'time.day_ago': { ru: '{n} дн назад', en: '{n}d ago' },
|
|
185
|
+
'sessions.dir': { ru: 'Папка сессий: {v}', en: 'Sessions dir: {v}' },
|
|
186
|
+
'sessions.none': {
|
|
187
|
+
ru: 'Сохранённых сессий нет. Они появятся после первой задачи/чата.',
|
|
188
|
+
en: 'No saved sessions. They appear after the first task/chat.',
|
|
189
|
+
},
|
|
190
|
+
'sessions.restore_hint': {
|
|
191
|
+
ru: 'Восстановить: /resume-id <id> (полный id) или /resume <n> после /chats.',
|
|
192
|
+
en: 'Restore: /resume-id <id> (full id) or /resume <n> after /chats.',
|
|
193
|
+
},
|
|
194
|
+
'sessions.resume_id_usage': {
|
|
195
|
+
ru: 'Использование: /resume-id <chat id>',
|
|
196
|
+
en: 'Usage: /resume-id <chat id>',
|
|
197
|
+
},
|
|
198
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Spinner / editor status strings.
|
|
2
|
+
export const spinnerMessages = {
|
|
3
|
+
'spinner.phrases': {
|
|
4
|
+
ru: 'Анализирую запрос…|Изучаю контекст…|Планирую решение…|Обрабатываю данные…|Формулирую ответ…|Проверяю детали…|Собираю информацию…|Обдумываю варианты…|Структурирую мысли…|Готовлю решение…|Анализирую код…|Уточняю детали…|Выполняю вычисления…|Систематизирую данные…|Прорабатываю задачу…|Проверяю логику…|Оптимизирую подход…|Формирую выводы…',
|
|
5
|
+
en: 'Analyzing the request…|Reviewing the context…|Planning the solution…|Processing the data…|Formulating the answer…|Checking the details…|Gathering information…|Weighing the options…|Structuring the thoughts…|Preparing the solution…|Analyzing the code…|Clarifying the details…|Running the computation…|Organizing the data…|Working through the task…|Verifying the logic…|Optimizing the approach…|Forming conclusions…',
|
|
6
|
+
},
|
|
7
|
+
'spinner.hint': { ru: 'Esc — стоп', en: 'Esc — stop' },
|
|
8
|
+
'spinner.pause': {
|
|
9
|
+
ru: '⏳ пауза {n}с перед отправкой',
|
|
10
|
+
en: '⏳ pause {n}s before send',
|
|
11
|
+
},
|
|
12
|
+
'spinner.running_tool': {
|
|
13
|
+
ru: '⚙ выполняю {name}',
|
|
14
|
+
en: '⚙ running {name}',
|
|
15
|
+
},
|
|
16
|
+
// Send/generation lifecycle indicator in the status line. Unlike the
|
|
17
|
+
// animated thinking phrase, it says explicitly that a generation is in
|
|
18
|
+
// flight. 'paused'/'settled' have no label (see LineEditor._stateLabel).
|
|
19
|
+
'state.generating': { ru: '▶ генерация', en: '▶ generating' },
|
|
20
|
+
'state.settled': { ru: '✓ готово', en: '✓ done' },
|
|
21
|
+
'editor.more': { ru: '…ещё {n}', en: '…{n} more' },
|
|
22
|
+
'editor.page_hint': {
|
|
23
|
+
ru: '(Ctrl+N/Ctrl+P — листать, Tab — вставить)',
|
|
24
|
+
en: '(Ctrl+N/Ctrl+P to page, Tab to insert)',
|
|
25
|
+
},
|
|
26
|
+
'editor.answer': { ru: '● Ответ', en: '● Answer' },
|
|
27
|
+
// Reverse search (Ctrl+R) status line. The query may be empty.
|
|
28
|
+
'editor.search_prompt': {
|
|
29
|
+
ru: '(обратный поиск) `{q}` — Ctrl+R дальше, Enter принять, Esc отмена',
|
|
30
|
+
en: '(reverse-i-search) `{q}` — Ctrl+R next, Enter accept, Esc cancel',
|
|
31
|
+
},
|
|
32
|
+
'editor.search_fail': {
|
|
33
|
+
ru: '(обратный поиск) `{q}` — не найдено, Esc отмена',
|
|
34
|
+
en: '(reverse-i-search) `{q}` — not found, Esc cancel',
|
|
35
|
+
},
|
|
36
|
+
};
|