subscription-gateway 0.1.3 → 0.1.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 +47 -0
- package/gateway.mjs +29 -1
- package/package.json +4 -3
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Изменения
|
|
2
|
+
|
|
3
|
+
Записи ведутся **от первой опубликованной версии**. Редакции, существовавшие до неё, сюда не
|
|
4
|
+
входят: они не уезжали к получателю, и их номера ничего не адресуют снаружи.
|
|
5
|
+
|
|
6
|
+
## 0.1.5 — 05.09.2026
|
|
7
|
+
|
|
8
|
+
🔴 **Крышки в зависимостях сняты — стоят точные версии.**
|
|
9
|
+
|
|
10
|
+
Было `^0.3.238` и `^4.0.0`, стало `0.3.258` и `4.4.3` — ровно то, что установлено и работает.
|
|
11
|
+
|
|
12
|
+
ЗАЧЕМ. Крышка — это не «свежая версия», это **перевод метки, сделанный за тебя и молча**:
|
|
13
|
+
следующая установка утянет то, чего никто не смотрел. У нас в реестре уже лежит `0.3.261`, то
|
|
14
|
+
есть при `npm install` состав поменялся бы сам, без единого решения человека.
|
|
15
|
+
Тот же порядок мы сегодня завели на выпуске (метку двигает приёмка) и на установке в общем
|
|
16
|
+
каталоге (точные версии вместо крышек). Оставить третье место значило бы держать открытой ту
|
|
17
|
+
же дверь.
|
|
18
|
+
|
|
19
|
+
ЦЕНА, названная прямо: обновления чужой библиотеки — включая исправления в ней — теперь не
|
|
20
|
+
приезжают сами. Их надо поднимать рукой и проводить через приёмку, как всё остальное. Это
|
|
21
|
+
осознанный размен: тихое обновление опаснее задержанного.
|
|
22
|
+
|
|
23
|
+
⚠️ ГРАНИЦА: снята крышка только в НАШЕМ манифесте. В боевом каталоге установки — отдельный
|
|
24
|
+
манифест, и он правится отдельно; правка там не меняет уже загруженный процесс и вводится
|
|
25
|
+
подъёмом чужой рукой.
|
|
26
|
+
|
|
27
|
+
## 0.1.4 — 04.09.2026
|
|
28
|
+
|
|
29
|
+
Шлюз называет свою редакцию при подъёме: версия И сумма файла (долг 106).
|
|
30
|
+
|
|
31
|
+
Два признака, а не один: в пакете печатается версия из своего манифеста, в боевом каталоге
|
|
32
|
+
манифест установочный и версии не несёт — там честное «неизвестна» и точная сумма файла.
|
|
33
|
+
Версия отвечает «какой выпуск», сумма — «этот ли ровно файл». Дописывать `version` в чужой
|
|
34
|
+
манифест не стали: он тут же стал бы парным объектом с кодом и разошёлся молча.
|
|
35
|
+
|
|
36
|
+
## 0.1.3 — 04.09.2026
|
|
37
|
+
|
|
38
|
+
**Проверку схем стало чем позвать: добавлен `scripts.test`.** Файл проверки лежал в пакете и
|
|
39
|
+
был включён в состав, но команды для него не существовало — снаружи пакет был неотличим от
|
|
40
|
+
пакета без проверок вовсе.
|
|
41
|
+
|
|
42
|
+
**Отсутствие файла схем перестало обвинять исправный предмет.** Было: голый стектрейс и код 1
|
|
43
|
+
(«расхождение»). Стало: код 2 («проверять нечем») с путём в сообщении. Путь берётся аргументом,
|
|
44
|
+
пакет прямо приглашает указать свой — опечатка в нём обычна, и читать её как поломку предмета
|
|
45
|
+
нельзя.
|
|
46
|
+
📌 В шапке ТОГО ЖЕ файла написано «три исхода, а не два», и класс объявлен вылеченным. Вылечен
|
|
47
|
+
он был только для зависимости: объявление о лечении и лечение разошлись внутри одного файла.
|
package/gateway.mjs
CHANGED
|
@@ -78,7 +78,35 @@ const MCP_SERVERS = (() => {
|
|
|
78
78
|
/** Рабочий каталог инструментов по умолчанию — дом пользователя экземпляра. */
|
|
79
79
|
const WORK_DIR = process.env.GATEWAY_WORK_DIR || process.env.HOME || '/tmp';
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
// 🔴 ВЕРСИЯ ЧИТАЕТСЯ ИЗ СВОЕГО МАНИФЕСТА, А НЕ ПИШЕТСЯ ЛИТЕРАЛОМ (долг 106, 04.09.2026).
|
|
82
|
+
// ЗАЧЕМ. Шлюз писал в журнал только имя, без номера, и редакцию работающего экземпляра нельзя
|
|
83
|
+
// было установить НИЧЕМ: время файлов не годится (npm ставит всем файлам в тарболе одну метку
|
|
84
|
+
// 1985-10-26 08:15:00), сумма на диске отвечает про диск, а не про то, что процесс прочитал
|
|
85
|
+
// при старте. В тот же день строка `[dsh-pamyat-core <версия>]` у соседнего пакета трижды
|
|
86
|
+
// закрывала спор о том, что в бою, — здесь такой строки не было.
|
|
87
|
+
// ПОЧЕМУ НЕ ЛИТЕРАЛ: он разойдётся с манифестом молча. Манифест не прочитан — печатаем
|
|
88
|
+
// «неизвестна», а не выдуманное число: выдуманное хуже честного «не знаю».
|
|
89
|
+
// 🔴 ДВА ПРИЗНАКА, А НЕ ОДИН — и вторая половина куплена заменом (04.09.2026).
|
|
90
|
+
// Версия из манифеста работает В ПАКЕТЕ, но в ЖИВОМ каталоге манифест другой: это манифест
|
|
91
|
+
// установки зависимостей (private, без поля version), и правка дала бы «неизвестна». Проверено
|
|
92
|
+
// на копии живого каталога ДО того, как трогать боевой файл.
|
|
93
|
+
// Поэтому рядом печатается КОРОТКАЯ СУММА САМОГО ФАЙЛА: она не зависит ни от манифеста, ни от
|
|
94
|
+
// того, кто и как разложил установку, и опознаёт редакцию однозначно. Версия отвечает «какой
|
|
95
|
+
// выпуск», сумма — «этот ли ровно файл». Разойдутся — сразу видно, что установка не из пакета.
|
|
96
|
+
const VERSIYA = (() => {
|
|
97
|
+
try {
|
|
98
|
+
const put = new URL('./package.json', import.meta.url);
|
|
99
|
+
return JSON.parse(fs.readFileSync(put, 'utf8')).version ?? 'неизвестна';
|
|
100
|
+
} catch { return 'неизвестна'; }
|
|
101
|
+
})();
|
|
102
|
+
const SUMMA = (() => {
|
|
103
|
+
try {
|
|
104
|
+
const svoj = fs.readFileSync(new URL(import.meta.url));
|
|
105
|
+
return nodeCrypto.createHash('sha256').update(svoj).digest('hex').slice(0, 8);
|
|
106
|
+
} catch { return '????????'; }
|
|
107
|
+
})();
|
|
108
|
+
|
|
109
|
+
const log = (m) => console.error(`[subscription-gateway ${VERSIYA}/${SUMMA}] ${m}`);
|
|
82
110
|
|
|
83
111
|
/**
|
|
84
112
|
* «exited with code N» от SDK — это только код без причины; истина в транскрипте
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "subscription-gateway",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "Subscription gateway for DeepSeek Harness — runs the model loop through the vendor's official agent SDK, so the platform works on a subscription seat instead of a metered API key, with the token kept in one place on the machine.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "gateway.mjs",
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"schedule.json",
|
|
14
14
|
"test-schema-adapter.mjs",
|
|
15
15
|
"systemd",
|
|
16
|
+
"CHANGELOG.md",
|
|
16
17
|
"README.md",
|
|
17
18
|
"README.ru.md"
|
|
18
19
|
],
|
|
@@ -33,7 +34,7 @@
|
|
|
33
34
|
"node": ">=20"
|
|
34
35
|
},
|
|
35
36
|
"dependencies": {
|
|
36
|
-
"@anthropic-ai/claude-agent-sdk": "
|
|
37
|
-
"zod": "
|
|
37
|
+
"@anthropic-ai/claude-agent-sdk": "0.3.258",
|
|
38
|
+
"zod": "4.4.3"
|
|
38
39
|
}
|
|
39
40
|
}
|