zames_pro 2.21.2 → 2.23.0

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/dist/i18n.js CHANGED
@@ -354,6 +354,10 @@ const CATALOG = {
354
354
  ru: '⏳ пауза {n}с перед отправкой',
355
355
  en: '⏳ pause {n}s before send',
356
356
  },
357
+ 'spinner.running_tool': {
358
+ ru: '⚙ выполняю {name}',
359
+ en: '⚙ running {name}',
360
+ },
357
361
  'editor.more': { ru: '…ещё {n}', en: '…{n} more' },
358
362
  'editor.answer': { ru: '● Ответ', en: '● Answer' },
359
363
  // ---------- status ----------
package/dist/input.js CHANGED
@@ -221,7 +221,9 @@ export function formatTokenStatus(tokens, limit = CONTEXT_LIMIT) {
221
221
  }
222
222
  const pct = Math.max(0, (n / limit) * 100);
223
223
  const pctStr = pct >= 10 ? String(Math.round(pct)) : pct.toFixed(1);
224
- return compact + ' · ' + pctStr + '%';
224
+ // "ctx" marks this as the USED context size, so the operator does not have
225
+ // to guess what "302k · 30%" means.
226
+ return 'ctx ' + compact + ' · ' + pctStr + '%';
225
227
  }
226
228
  export class LineEditor {
227
229
  promptStr;
@@ -759,8 +761,14 @@ export class LineEditor {
759
761
  toolCall(name, args) {
760
762
  const preview = safeJson(args).slice(0, 120);
761
763
  this.printAbove(theme.tool('🔧 ' + name) + ' ' + theme.dim(preview));
764
+ // A tool may run for a long time (Bash, npm test, MCP). Without an active
765
+ // animation the operator sees a frozen screen and cannot tell work is in
766
+ // progress. Start the animated status AFTER printAbove (which stops the
767
+ // dots) and keep it running until toolResult()/assistant()/stop().
768
+ this._startAnimated(translate(this.locale)('spinner.running_tool', { name }));
762
769
  }
763
770
  toolResult(result) {
771
+ this.stop();
764
772
  const text = typeof result === 'string' ? result : safeJson(result);
765
773
  const preview = text.slice(0, 200).split(NL).join(' ↵ ');
766
774
  this.printAbove(theme.toolResult(' → ' + preview));
package/dist/spinner.js CHANGED
@@ -129,6 +129,11 @@ export function createSpinner(locale = 'ru') {
129
129
  stop();
130
130
  const preview = JSON.stringify(args).slice(0, 120);
131
131
  console.log(theme.tool('🔧 ' + name), theme.dim(preview));
132
+ // Keep an animated status while the tool runs (Bash/npm/MCP can take a
133
+ // long time): the operator must see that work is in progress.
134
+ if (pending)
135
+ return;
136
+ startAnimated(translate(locale)('spinner.running_tool', { name }));
132
137
  },
133
138
  toolResult: (result) => {
134
139
  stop();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zames_pro",
3
- "version": "2.21.2",
3
+ "version": "2.23.0",
4
4
  "description": "Terminal coding agent over chat.deepseek.com via Playwright",
5
5
  "type": "module",
6
6
  "bin": {