zames_pro 2.29.8 → 2.29.9

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.
@@ -357,6 +357,11 @@ export async function runAgentLoop({ browser, tools, task, workdir, maxIteration
357
357
  const looksService = !trimmed ||
358
358
  trimmed.length < 2 ||
359
359
  /^(reading|thinking|searching|analyzing|generating|stop|остановить|читаю|думаю|поиск|анализ)[\s.…]*$/i.test(trimmed) ||
360
+ // DeepSeek sometimes returns its OWN safety-classification block
361
+ // ("<ds_safety>…</ds_safety>Safe") INSTEAD of an answer. It is not a
362
+ // tool-call and not a real final answer — treat it as a service
363
+ // answer so the loop re-asks instead of stopping on it.
364
+ /<ds_safety>|<\/ds_safety>/i.test(trimmed) ||
360
365
  (trimmed.length <= 200 &&
361
366
  /(messages? too frequent|too many requests|rate limit|server (is )?busy|service (is )?unavailable|слишком часто|try again later)/i.test(trimmed));
362
367
  if (looksService && stallRetries < MAX_STALL_RETRIES) {
package/dist/browser.js CHANGED
@@ -1974,8 +1974,12 @@ export class DeepSeekBrowser {
1974
1974
  continue;
1975
1975
  }
1976
1976
  }
1977
- if (truncated) {
1978
- throw new GenerationIncompleteError(this._netBody.slice(-300));
1977
+ // No Continue button to click (DeepSeek shows "Stopped" without one) OR
1978
+ // autoContinue is off. Do NOT wait out the whole timeout — the turn is
1979
+ // dead (truncated / finished with no answer), so tell ask() to RESEND
1980
+ // the prompt right away (that is the only remaining way to continue).
1981
+ if (truncated || noAnswer) {
1982
+ throw new GenerationIncompleteError((this._netBody || 'finished without answer').slice(-300));
1979
1983
  }
1980
1984
  // Reasoning-mode pause: DeepSeek caps the THINK phase and shows a
1981
1985
  // Continue button; the model does not resume by itself. Click it so the
package/dist/i18n.js CHANGED
@@ -534,8 +534,8 @@ const CATALOG = {
534
534
  en: '⚠ No answer yet ({attempt}/{max}): {error} — retrying...',
535
535
  },
536
536
  'ds.incomplete_retry': {
537
- ru: '⏳ DeepSeek оборвал ответ — жму «Continue», чтобы продолжить (повтор {attempt}/{max})...',
538
- en: '⏳ DeepSeek truncated the answer — clicking Continue to resume (retry {attempt}/{max})...',
537
+ ru: '⏳ DeepSeek оборвал ответ и кнопки Continue нет — переотправляю задачу ({attempt}/{max})...',
538
+ en: '⏳ DeepSeek truncated the answer and there is no Continue button — resending the task ({attempt}/{max})...',
539
539
  },
540
540
  'ds.incomplete_give_up': {
541
541
  ru: '✖ DeepSeek {attempt} раз подряд оборвал ответ, не дойдя до конца. Возможно, включён режим размышления — попробуй выключить его (browser.deepThinking) или повтори позже.',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zames_pro",
3
- "version": "2.29.8",
3
+ "version": "2.29.9",
4
4
  "description": "Terminal coding agent over chat.deepseek.com via Playwright",
5
5
  "type": "module",
6
6
  "bin": {