dsh-telegram-multiagent 1.5.2 → 1.5.4
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 +30 -0
- package/package.json +1 -1
- package/src/index.js +5 -2
- package/test/stend-svezhesti-opory.mjs +13 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,33 @@
|
|
|
1
|
+
## 1.5.4
|
|
2
|
+
|
|
3
|
+
**Форма причины совмещена: текст первым, код в скобках.** Обе предложенные формы давали одну и
|
|
4
|
+
ту же информацию и каждая была лучше в своём случае:
|
|
5
|
+
|
|
6
|
+
при пустом message: «Error: ECONNRESET» против «Error: (без пояснения) [ECONNRESET]»
|
|
7
|
+
при полном: «Error: ENETDOWN сеть недоступна» против «Error: сеть недоступна [ENETDOWN]»
|
|
8
|
+
|
|
9
|
+
Вторая форма читается лучше при полном исключении и ПРОТИВОРЕЧИТ СЕБЕ при пустом: говорит
|
|
10
|
+
«пояснения нет» и тут же его даёт. Теперь «(без пояснения)» печатается, только когда нет ни
|
|
11
|
+
текста, ни кода.
|
|
12
|
+
|
|
13
|
+
ось 1 (непусто): 10 из 10
|
|
14
|
+
ось 2 (текст сохранён): 4 из 4
|
|
15
|
+
|
|
16
|
+
## 1.5.3
|
|
17
|
+
|
|
18
|
+
🔴 **Починка стенда, который я сломала правкой 1.5.2 — и выпустила, не прочитав его вывод.**
|
|
19
|
+
`stend-svezhesti-opory` вырезает блок свежести из предмета и собирает через `new Function`.
|
|
20
|
+
В 1.5.2 блок стал звать `prichina(e)`, объявленную рядом, но ВНЕ блока — вырезанное перестало
|
|
21
|
+
быть самодостаточным, стенд дал «prichina is not defined» и покраснел на исправном коде.
|
|
22
|
+
|
|
23
|
+
Стенд теперь вырезает блок ВМЕСТЕ С ЗАВИСИМОСТЬЮ; отсутствие `prichina` в предмете даёт
|
|
24
|
+
СЛЕПОТУ с названной причиной, а не расхождение.
|
|
25
|
+
|
|
26
|
+
⚠️ Мой промах в порядке, а не в коде: я прогнала стенды перед выпуском, увидела вывод и не
|
|
27
|
+
прочла в нём «расхождений 1». Обёртка публикации стенды не проверяет — это её граница, и
|
|
28
|
+
1.5.2 ушёл в реестр с красным стендом. Получатель прогнал бы `npm test` и увидел красное на
|
|
29
|
+
работающем пакете.
|
|
30
|
+
|
|
1
31
|
## 1.5.2
|
|
2
32
|
|
|
3
33
|
**Разбор брошенного — по ДВУМ ОСЯМ.** Три места (`Измеритель отказал`, `обход событий отказал`,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-telegram-multiagent",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.4",
|
|
4
4
|
"description": "Канал Telegram для DeepSeek Harness: один модуль на машину обслуживает несколько агентов, у каждого свой бот, свой файл токена и свой список разрешённых. Метка отправителя неподделываема, память владельца и координатора слита в одну, режим доставки переключается файлом вне кода, цели управляются из канала.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.js",
|
package/src/index.js
CHANGED
|
@@ -1392,8 +1392,11 @@ export function apply(ctx, config = {}) {
|
|
|
1392
1392
|
function prichina(e) {
|
|
1393
1393
|
const tekst = String(e?.message ?? (typeof e === 'object' ? '' : (e ?? ''))).trim();
|
|
1394
1394
|
const kod = e?.code ? String(e.code) : '';
|
|
1395
|
-
|
|
1396
|
-
|
|
1395
|
+
// Текст ПЕРВЫМ, код в скобках уточнением — так читается лучше при полном исключении.
|
|
1396
|
+
// «(без пояснения)» только когда нет НИ ТОГО, НИ ДРУГОГО: иначе строка сама себе
|
|
1397
|
+
// противоречит — «(без пояснения) [ECONNRESET]» говорит «пояснения нет» и тут же его даёт.
|
|
1398
|
+
const hvost = tekst || (kod ? '' : '(без пояснения)');
|
|
1399
|
+
return ((e?.name ?? typeof e) + ': ' + [hvost, kod && '[' + kod + ']'].filter(Boolean).join(' ')).slice(0, 90);
|
|
1397
1400
|
}
|
|
1398
1401
|
|
|
1399
1402
|
function errDetail(e) {
|
|
@@ -36,9 +36,21 @@ if (!m) {
|
|
|
36
36
|
process.exit(2)
|
|
37
37
|
}
|
|
38
38
|
// Оборачиваем вырезанное в функцию от sess: внутри блок обращается только к `sess`.
|
|
39
|
+
// 🔴 ВЫРЕЗАЕМ ВМЕСТЕ С ЗАВИСИМОСТЬЮ. Блок свежести зовёт `prichina(e)` — функцию,
|
|
40
|
+
// объявленную рядом, но ВНЕ блока. Вырезав один блок, стенд получал «prichina is not
|
|
41
|
+
// defined» и краснел на исправном предмете.
|
|
42
|
+
// Это не оговорка к приёму «вырезать из предмета», а его цена: вырезанное должно быть
|
|
43
|
+
// самодостаточным, и когда предмет теряет самодостаточность, стенд обязан сказать об
|
|
44
|
+
// этом — он и сказал. Правка предмета сломала способ его проверки, и это верное красное.
|
|
45
|
+
const mPr = text.match(/function prichina\(e\) \{[\s\S]*?\n \}/)
|
|
46
|
+
if (!mPr) {
|
|
47
|
+
console.log('СЛЕПОТА: блок свежести зовёт prichina(), а её объявления в предмете нет —')
|
|
48
|
+
console.log(' вырезанное не соберётся. Проверить руками, не переименована ли она.')
|
|
49
|
+
process.exit(2)
|
|
50
|
+
}
|
|
39
51
|
let svezhestOt
|
|
40
52
|
try {
|
|
41
|
-
svezhestOt = new Function('sess', m[0].replace('const svezhest = ', 'return ')
|
|
53
|
+
svezhestOt = new Function('sess', mPr[0] + '\n' + m[0].replace('const svezhest = ', 'return ').replace(/;$/, '') + ';')
|
|
42
54
|
} catch (e) {
|
|
43
55
|
console.log(`СЛЕПОТА: вырезанный блок не собирается: ${e?.message ?? e}`); process.exit(2)
|
|
44
56
|
}
|