blun-king-cli 9.1.42 → 9.1.44
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/LIESMICH.txt +12 -1
- package/README.md +11 -1
- package/bin/blun.js +0 -0
- package/bin/core-bootstrap.js +0 -0
- package/bin/king.js +0 -0
- package/bin/launcher-mode.js +0 -0
- package/bin/launcher-runtime.js +0 -0
- package/bin/managed-node.js +0 -0
- package/bin/native-module-repair.js +0 -0
- package/bin/node-runtime.js +0 -0
- package/bin/node-version.js +0 -0
- package/bin/plugin-bootstrap.js +0 -0
- package/bin/private-paths.js +0 -0
- package/bin/standard-tools-bootstrap.js +0 -0
- package/bin/update-lease.js +0 -0
- package/bin/update-notice.js +45 -3
- package/blun.mjs +495 -212
- package/package.json +1 -1
package/LIESMICH.txt
CHANGED
|
@@ -9,7 +9,7 @@ Installation
|
|
|
9
9
|
------------
|
|
10
10
|
Die geprüfte Version exakt global installieren:
|
|
11
11
|
|
|
12
|
-
npm install -g blun-king-cli@9.1.
|
|
12
|
+
npm install -g blun-king-cli@9.1.44
|
|
13
13
|
|
|
14
14
|
Start
|
|
15
15
|
-----
|
|
@@ -20,6 +20,17 @@ Start
|
|
|
20
20
|
Beide Startbefehle verwenden dieselbe Version, dasselbe Konto, dasselbe Modell
|
|
21
21
|
und dieselben Befehle.
|
|
22
22
|
|
|
23
|
+
Zug-Wächter
|
|
24
|
+
-----------
|
|
25
|
+
Läuft ein Zug 20 Minuten ohne neues Werkzeugergebnis, meldet die Konsole den
|
|
26
|
+
Stand auch im verbundenen Telegram-Kanal. Fünf aufeinanderfolgende identische
|
|
27
|
+
fehlgeschlagene Werkzeugaufrufe beenden den Zug mit einer Fehlermeldung.
|
|
28
|
+
|
|
29
|
+
Die Grenzwerte lassen sich vor dem Start über diese Umgebungsvariablen ändern:
|
|
30
|
+
|
|
31
|
+
BLUN_TURN_WATCHDOG_IDLE_MINUTES
|
|
32
|
+
BLUN_TURN_WATCHDOG_MAX_FAILED_REPETITIONS
|
|
33
|
+
|
|
23
34
|
Nachweisbare Arbeitsabläufe
|
|
24
35
|
---------------------------
|
|
25
36
|
|
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ Voraussetzung ist Node.js 24.15 oder neuer. Die geprüfte Version wird exakt
|
|
|
9
9
|
installiert:
|
|
10
10
|
|
|
11
11
|
```powershell
|
|
12
|
-
npm install -g blun-king-cli@9.1.
|
|
12
|
+
npm install -g blun-king-cli@9.1.44
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
## Reproduzierbares Staging und Packen
|
|
@@ -35,6 +35,16 @@ an. Version, Konto, Modell und Befehle sind ansonsten identisch. Der Unterschied
|
|
|
35
35
|
gilt nur für den laufenden Prozess; die gespeicherte
|
|
36
36
|
Plugin-Konfiguration wird nicht umgeschrieben.
|
|
37
37
|
|
|
38
|
+
## Zug-Wächter
|
|
39
|
+
|
|
40
|
+
Läuft ein Zug 20 Minuten ohne neues Werkzeugergebnis, meldet die Konsole den
|
|
41
|
+
Stand auch im verbundenen Telegram-Kanal. Fünf aufeinanderfolgende identische
|
|
42
|
+
fehlgeschlagene Werkzeugaufrufe beenden den Zug mit einer Fehlermeldung.
|
|
43
|
+
|
|
44
|
+
Die Grenzwerte lassen sich vor dem Start mit
|
|
45
|
+
`BLUN_TURN_WATCHDOG_IDLE_MINUTES` und
|
|
46
|
+
`BLUN_TURN_WATCHDOG_MAX_FAILED_REPETITIONS` ändern.
|
|
47
|
+
|
|
38
48
|
Beim ersten Start werden das Telegram-Plugin und die mitgelieferten Skills
|
|
39
49
|
eingerichtet. Die Anmeldung erfolgt anschließend in der
|
|
40
50
|
Konsole mit `/login` über den BLUN-OAuth-Server. Das Paket erzeugt keine
|
package/bin/blun.js
CHANGED
|
File without changes
|
package/bin/core-bootstrap.js
CHANGED
|
File without changes
|
package/bin/king.js
CHANGED
|
File without changes
|
package/bin/launcher-mode.js
CHANGED
|
File without changes
|
package/bin/launcher-runtime.js
CHANGED
|
File without changes
|
package/bin/managed-node.js
CHANGED
|
File without changes
|
|
File without changes
|
package/bin/node-runtime.js
CHANGED
|
File without changes
|
package/bin/node-version.js
CHANGED
|
File without changes
|
package/bin/plugin-bootstrap.js
CHANGED
|
File without changes
|
package/bin/private-paths.js
CHANGED
|
File without changes
|
|
File without changes
|
package/bin/update-lease.js
CHANGED
|
File without changes
|
package/bin/update-notice.js
CHANGED
|
@@ -46,14 +46,25 @@ const SEMVER_PATTERN = new RegExp(
|
|
|
46
46
|
+ `(?:-(${SEMVER_IDENTIFIER}(?:\\.${SEMVER_IDENTIFIER})*))?`
|
|
47
47
|
+ '(?:\\+([0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?$',
|
|
48
48
|
);
|
|
49
|
+
const LEGACY_MANIFEST_KEYS = Object.freeze([
|
|
50
|
+
'install',
|
|
51
|
+
'latest',
|
|
52
|
+
'minSupported',
|
|
53
|
+
'name',
|
|
54
|
+
'notesUrl',
|
|
55
|
+
'releasedAt',
|
|
56
|
+
]);
|
|
49
57
|
const MANIFEST_KEYS = Object.freeze([
|
|
50
58
|
'install',
|
|
51
59
|
'latest',
|
|
52
60
|
'minSupported',
|
|
53
61
|
'name',
|
|
54
62
|
'notesUrl',
|
|
63
|
+
'releaseNotes',
|
|
55
64
|
'releasedAt',
|
|
56
65
|
]);
|
|
66
|
+
const RELEASE_NOTES_MAX_COUNT = 8;
|
|
67
|
+
const RELEASE_NOTE_MAX_BYTES = 240;
|
|
57
68
|
const ENDPOINT_LIMITS = new Map([
|
|
58
69
|
[REGISTRY_URL, 1024 * 1024],
|
|
59
70
|
[FALLBACK_MANIFEST_URL, 64 * 1024],
|
|
@@ -193,9 +204,23 @@ function isIsoTimestamp(value) {
|
|
|
193
204
|
&& date.getUTCSeconds() === Number(match[6]);
|
|
194
205
|
}
|
|
195
206
|
|
|
207
|
+
function parseReleaseNotes(value) {
|
|
208
|
+
if (!Array.isArray(value) || value.length > RELEASE_NOTES_MAX_COUNT) return undefined;
|
|
209
|
+
const notes = [];
|
|
210
|
+
for (const note of value) {
|
|
211
|
+
if (!isBoundedText(note, RELEASE_NOTE_MAX_BYTES)) return undefined;
|
|
212
|
+
notes.push(note);
|
|
213
|
+
}
|
|
214
|
+
return Object.freeze(notes);
|
|
215
|
+
}
|
|
216
|
+
|
|
196
217
|
function parseFallbackManifest(value) {
|
|
197
|
-
const record = exactDataRecord(value, MANIFEST_KEYS)
|
|
218
|
+
const record = exactDataRecord(value, MANIFEST_KEYS)
|
|
219
|
+
|| exactDataRecord(value, LEGACY_MANIFEST_KEYS);
|
|
198
220
|
const notesUrl = record ? canonicalOfficialNotesUrl(record.notesUrl) : undefined;
|
|
221
|
+
const releaseNotes = record && Object.hasOwn(record, 'releaseNotes')
|
|
222
|
+
? parseReleaseNotes(record.releaseNotes)
|
|
223
|
+
: undefined;
|
|
199
224
|
if (!record
|
|
200
225
|
|| record.name !== PACKAGE_NAME
|
|
201
226
|
|| !parseSemver(record.latest)
|
|
@@ -203,6 +228,7 @@ function parseFallbackManifest(value) {
|
|
|
203
228
|
|| compareSemver(record.minSupported, record.latest) === 1
|
|
204
229
|
|| !isIsoTimestamp(record.releasedAt)
|
|
205
230
|
|| !notesUrl
|
|
231
|
+
|| (Object.hasOwn(record, 'releaseNotes') && releaseNotes === undefined)
|
|
206
232
|
|| !isBoundedText(record.install, 256)) {
|
|
207
233
|
return undefined;
|
|
208
234
|
}
|
|
@@ -212,6 +238,7 @@ function parseFallbackManifest(value) {
|
|
|
212
238
|
minSupported: record.minSupported,
|
|
213
239
|
releasedAt: record.releasedAt,
|
|
214
240
|
notesUrl,
|
|
241
|
+
...(releaseNotes === undefined ? {} : { releaseNotes }),
|
|
215
242
|
install: record.install,
|
|
216
243
|
});
|
|
217
244
|
}
|
|
@@ -244,7 +271,14 @@ function resolveEffectiveRelease(currentVersion, registryTags, fallbackManifest)
|
|
|
244
271
|
if (compareSemver(version, currentVersion) <= 0) return undefined;
|
|
245
272
|
|
|
246
273
|
if (validFallback && compareSemver(validFallback.latest, version) === 0) {
|
|
247
|
-
return {
|
|
274
|
+
return {
|
|
275
|
+
channel: 'stable',
|
|
276
|
+
version,
|
|
277
|
+
notesUrl: validFallback.notesUrl,
|
|
278
|
+
...(validFallback.releaseNotes === undefined
|
|
279
|
+
? {}
|
|
280
|
+
: { releaseNotes: validFallback.releaseNotes }),
|
|
281
|
+
};
|
|
248
282
|
}
|
|
249
283
|
return { channel: 'stable', version };
|
|
250
284
|
}
|
|
@@ -496,7 +530,13 @@ function clearPendingUpdate(blunDir) {
|
|
|
496
530
|
fs.rmSync(pendingUpdatePath(blunDir), { force: true });
|
|
497
531
|
}
|
|
498
532
|
|
|
499
|
-
function writeCoreInstallSuccess(
|
|
533
|
+
function writeCoreInstallSuccess(
|
|
534
|
+
blunDir,
|
|
535
|
+
fromVersion,
|
|
536
|
+
version,
|
|
537
|
+
releaseNotes,
|
|
538
|
+
now = Date.now(),
|
|
539
|
+
) {
|
|
500
540
|
if (!parseSemver(fromVersion) || !parseSemver(version)) {
|
|
501
541
|
throw new Error('INVALID_UPDATE_VERSION');
|
|
502
542
|
}
|
|
@@ -515,6 +555,7 @@ function writeCoreInstallSuccess(blunDir, fromVersion, version, now = Date.now()
|
|
|
515
555
|
lastSuccess: {
|
|
516
556
|
version,
|
|
517
557
|
fromVersion,
|
|
558
|
+
...(releaseNotes === undefined ? {} : { releaseNotes }),
|
|
518
559
|
installedAt: new Date(now).toISOString(),
|
|
519
560
|
notifiedAt: null,
|
|
520
561
|
},
|
|
@@ -1456,6 +1497,7 @@ async function runUpdateFlow(options, explicitUpdate) {
|
|
|
1456
1497
|
blunDir,
|
|
1457
1498
|
currentVersion,
|
|
1458
1499
|
release.version,
|
|
1500
|
+
release.releaseNotes,
|
|
1459
1501
|
(options.now || Date.now)(),
|
|
1460
1502
|
);
|
|
1461
1503
|
} catch {
|