dsh-telegram-multiagent 1.5.3 → 1.5.5

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 CHANGED
@@ -1,3 +1,35 @@
1
+ ## 1.5.5
2
+
3
+ 🔴 **Плагин называет свою редакцию первой строкой подъёма (долг 108).** Раньше он давал 1648
4
+ строк за один подъём и ни в одной не называл версию — узнать её у работающего экземпляра было
5
+ НЕЧЕМ. Обходного пути нет: время файлов не годится (npm ставит всем файлам в тарболе одну метку
6
+ 1985-10-26 08:15:00, одинаковую у всех версий), а сумма на диске отвечает про диск, а не про то,
7
+ что процесс прочитал при старте.
8
+
9
+ [<агент>] [dsh-telegram-multiagent 1.5.5] подъём
10
+
11
+ Мера этому — сегодняшний день: строка `[dsh-pamyat-core <версия>]` у соседнего пакета трижды
12
+ закрывала спор о том, что в бою, а здесь такой строки не было, и редакцию приходилось выводить
13
+ из времён и сумм вместо того, чтобы измерить.
14
+ ⚠️ Версия читается ИЗ СВОЕГО манифеста, а не пишется литералом: литерал разошёлся бы с
15
+ манифестом молча. Если манифест не прочитан — печатается «неизвестна», а не выдуманное число:
16
+ выдуманное хуже честного «не знаю».
17
+
18
+ ## 1.5.4
19
+
20
+ **Форма причины совмещена: текст первым, код в скобках.** Обе предложенные формы давали одну и
21
+ ту же информацию и каждая была лучше в своём случае:
22
+
23
+ при пустом message: «Error: ECONNRESET» против «Error: (без пояснения) [ECONNRESET]»
24
+ при полном: «Error: ENETDOWN сеть недоступна» против «Error: сеть недоступна [ENETDOWN]»
25
+
26
+ Вторая форма читается лучше при полном исключении и ПРОТИВОРЕЧИТ СЕБЕ при пустом: говорит
27
+ «пояснения нет» и тут же его даёт. Теперь «(без пояснения)» печатается, только когда нет ни
28
+ текста, ни кода.
29
+
30
+ ось 1 (непусто): 10 из 10
31
+ ось 2 (текст сохранён): 4 из 4
32
+
1
33
  ## 1.5.3
2
34
 
3
35
  🔴 **Починка стенда, который я сломала правкой 1.5.2 — и выпустила, не прочитав его вывод.**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-telegram-multiagent",
3
- "version": "1.5.3",
3
+ "version": "1.5.5",
4
4
  "description": "Канал Telegram для DeepSeek Harness: один модуль на машину обслуживает несколько агентов, у каждого свой бот, свой файл токена и свой список разрешённых. Метка отправителя неподделываема, память владельца и координатора слита в одну, режим доставки переключается файлом вне кода, цели управляются из канала.",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
package/src/index.js CHANGED
@@ -68,6 +68,18 @@ function platformOf(config, log) {
68
68
  */
69
69
  const ACTIVE_POLLERS = new Map();
70
70
 
71
+ // 🔴 ВЕРСИЯ ЧИТАЕТСЯ ИЗ СВОЕГО МАНИФЕСТА, А НЕ ПИШЕТСЯ ЛИТЕРАЛОМ (долг 108, 04.09.2026).
72
+ // ЗАЧЕМ. Плагин давал 1648 строк за подъём и ни в одной не называл свою редакцию. Узнать её у
73
+ // работающего экземпляра было НЕЧЕМ: время файлов не годится (npm ставит всем файлам в тарболе
74
+ // одну метку 1985-10-26 08:15:00), а сумма на диске отвечает про диск, а не про то, что процесс
75
+ // прочитал при старте. Сегодня строка `[dsh-pamyat-core <версия>]` у соседнего пакета трижды
76
+ // закрывала спор о том, что в бою; здесь такой строки не было, и редакцию приходилось ВЫВОДИТЬ.
77
+ // ПОЧЕМУ НЕ ЛИТЕРАЛ: он разойдётся с манифестом молча — это наш класс парных объектов.
78
+ const VERSIYA = (() => {
79
+ try { return createRequire(import.meta.url)('../package.json').version ?? 'неизвестна'; }
80
+ catch { return 'неизвестна'; } // 🔴 не «1.х»: выдуманное число хуже честного «не знаю»
81
+ })();
82
+
71
83
  export const name = 'dsh-telegram-multiagent';
72
84
  // 🔴 compaction и tokenMeter НЕ в inject — намеренно, куплено канарейкой 02.09.2026.
73
85
  // Первая редакция объявляла их здесь, и копия платформы НЕ ПОДНЯЛАСЬ ВОВСЕ:
@@ -113,6 +125,9 @@ export function apply(ctx, config = {}) {
113
125
  // из опубликованного 1.3.0, чтобы места не разъезжались при следующей правке.
114
126
  const who_ = config.agentName || 'агент'; // для текстов, видимых собеседнику
115
127
  const log = (m) => console.error(`[${who}] ${m}`);
128
+ // Первая строка подъёма называет РЕДАКЦИЮ — чтобы «что в бою» спрашивали у журнала,
129
+ // а не выводили из времён файлов и сумм.
130
+ log(`[dsh-telegram-multiagent ${VERSIYA}] подъём`);
116
131
 
117
132
  const token = readTokenFrom(config, log);
118
133
  if (!token) return;
@@ -1392,8 +1407,11 @@ export function apply(ctx, config = {}) {
1392
1407
  function prichina(e) {
1393
1408
  const tekst = String(e?.message ?? (typeof e === 'object' ? '' : (e ?? ''))).trim();
1394
1409
  const kod = e?.code ? String(e.code) : '';
1395
- const hvost = [kod, tekst].filter(Boolean).join(' ') || '(без пояснения)';
1396
- return ((e?.name ?? typeof e) + ': ' + hvost).slice(0, 90);
1410
+ // Текст ПЕРВЫМ, код в скобках уточнением — так читается лучше при полном исключении.
1411
+ // «(без пояснения)» только когда нет НИ ТОГО, НИ ДРУГОГО: иначе строка сама себе
1412
+ // противоречит — «(без пояснения) [ECONNRESET]» говорит «пояснения нет» и тут же его даёт.
1413
+ const hvost = tekst || (kod ? '' : '(без пояснения)');
1414
+ return ((e?.name ?? typeof e) + ': ' + [hvost, kod && '[' + kod + ']'].filter(Boolean).join(' ')).slice(0, 90);
1397
1415
  }
1398
1416
 
1399
1417
  function errDetail(e) {