blun-king-cli 9.1.134 → 9.1.136

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 CHANGED
@@ -127,6 +127,8 @@ Ab BLUN King 9.1.133 werden die projektlokale und die gemeinsame `Mistake.md` ni
127
127
 
128
128
  Ab BLUN King 9.1.134 begrenzt die Modellprojektion nicht adressierte Telegram-Gruppennachrichten auf eine nachvollziehbare Vorschau von 2.000 Zeichen. Anfang und Ende bleiben erhalten, eine Markierung nennt die ursprüngliche Länge. Direkt an den Agenten gerichtete Nachrichten, die sichtbare Telegram-Historie, der Rohverlauf und Exporte bleiben vollständig. In Fredriks realem Verlauf betraf die Grenze 211 von 517 verschiedenen mitgelesenen Gruppenmeldungen und hätte 102.466 wiederholt übertragene Zeichen eingespart, also rund 25.617 geschätzte Token über die gemessenen Modellanfragen.
129
129
 
130
+ Ab BLUN King 9.1.136 behält die Modellprojektion nur noch den neuesten dynamischen `Mistake.md`-Hinweis. Ältere, zugbezogene Auswahlen bleiben im Sitzungsrohverlauf und in Exporten erhalten, werden nach einer neueren Auswahl aber nicht mehr erneut an das Modell gesendet. Andere geänderte Hinweise bleiben unberührt. In Fredriks aktueller Sitzung lagen fünf `Mistake.md`-Auswahlen vor; das Entfernen der vier überholten Kopien spart pro Modellanfrage 24.143 Zeichen, also etwa 6.036 geschätzte Token.
131
+
130
132
  Ab BLUN King 9.1.131 entfernt die Modellprojektion zwei ältere Regelkopien aus dem Systemprompt, sobald gleichwertige Regeln im Conduct-Abschnitt vorhanden sind. Betroffen sind ausschließlich die doppelten Hinweise zu Ehrlichkeit und Zugangsdaten; die vollständigen Conduct-Regeln und alle übrigen Prompt-Abschnitte bleiben unverändert. In der ausgelieferten Standardvorlage sinkt der wiederholt gesendete Prompt dadurch um 1.010 Zeichen, also um etwa 253 geschätzte Token pro Modellanfrage. Fehlt eines der Conduct-Gegenstücke, bleibt die entsprechende ältere Regel unverändert erhalten.
131
133
 
132
134
  Ab BLUN King 9.1.118 bleibt der Sitzungszeitstempel im Systemprompt während einer laufenden Sitzung unverändert. Das erneute Einlesen von Verzeichnisübersicht, AGENTS.md-Dateien, Zusatzverzeichnissen und Skillinformationen kann den Prompt weiterhin ändern, wenn sich die jeweiligen Quellen tatsächlich verändert haben. Bleiben diese Quellen gleich, entwertet die Aktualisierung nach einer Verdichtung den Präfix-Cache des Anbieters nicht mehr allein durch einen neuen Zeitstempel. In Fredriks gemessener Sitzung unterschieden sich die beiden letzten Systemprompts mit jeweils 68.631 Zeichen nur in der Zeitangabe, und zwar erst nach einem gemeinsamen Präfix von 27.111 Zeichen. Der geänderte Zeitstempel verhinderte damit die Wiederverwendung der übrigen 41.512 unveränderten Zeichen aus dem Präfix-Cache.
@@ -352,6 +354,20 @@ Das kompakte BLUN-Zeichen unter der Eingabe zeigt die Markenfarben wieder in
352
354
  der richtigen Reihenfolge: Der Statuspunkt und UN verwenden die Primärfarbe,
353
355
  BL bleibt weiß. Statuswerte, Profilname und Persona bleiben unverändert.
354
356
 
357
+ Einheitliche verwaltete Node-Laufzeit
358
+ --------------------------------------
359
+
360
+ Startet BLUN unter Windows oder macOS mit einer Node.js-Version vor 24.15.0,
361
+ richtet es eine private unterstützte Laufzeit ein und startet damit neu. Ab
362
+ BLUN King 9.1.135 steht das Verzeichnis dieser verwalteten Laufzeit auch im
363
+ PATH des Ersatzprozesses und aller untergeordneten Werkzeuge an erster Stelle.
364
+
365
+ Dadurch verwenden vom Agenten gestartete node- und npm-Befehle dieselbe
366
+ unterstützte Laufzeit wie die TUI, statt auf eine ältere Systeminstallation
367
+ zurückzufallen. Die globale Node-Installation des Systems wird nicht verändert.
368
+ OAuth, gespeicherte Anmeldedaten, Sitzungen und der Updatestatus bleiben
369
+ unverändert.
370
+
355
371
  Aktualisieren
356
372
  -------------
357
373
 
package/README.md CHANGED
@@ -133,6 +133,8 @@ Ab BLUN King 9.1.133 werden die projektlokale und die gemeinsame `Mistake.md` ni
133
133
 
134
134
  Ab BLUN King 9.1.134 begrenzt die Modellprojektion nicht adressierte Telegram-Gruppennachrichten auf eine nachvollziehbare Vorschau von 2.000 Zeichen. Anfang und Ende bleiben erhalten, eine Markierung nennt die ursprüngliche Länge. Direkt an den Agenten gerichtete Nachrichten, die sichtbare Telegram-Historie, der Rohverlauf und Exporte bleiben vollständig. In Fredriks realem Verlauf betraf die Grenze 211 von 517 verschiedenen mitgelesenen Gruppenmeldungen und hätte 102.466 wiederholt übertragene Zeichen eingespart, also rund 25.617 geschätzte Token über die gemessenen Modellanfragen.
135
135
 
136
+ Ab BLUN King 9.1.136 behält die Modellprojektion nur noch den neuesten dynamischen `Mistake.md`-Hinweis. Ältere, zugbezogene Auswahlen bleiben im Sitzungsrohverlauf und in Exporten erhalten, werden nach einer neueren Auswahl aber nicht mehr erneut an das Modell gesendet. Andere geänderte Hinweise bleiben unberührt. In Fredriks aktueller Sitzung lagen fünf `Mistake.md`-Auswahlen vor; das Entfernen der vier überholten Kopien spart pro Modellanfrage 24.143 Zeichen, also etwa 6.036 geschätzte Token.
137
+
136
138
  Ab BLUN King 9.1.131 entfernt die Modellprojektion zwei ältere Regelkopien aus dem Systemprompt, sobald gleichwertige Regeln im Conduct-Abschnitt vorhanden sind. Betroffen sind ausschließlich die doppelten Hinweise zu Ehrlichkeit und Zugangsdaten; die vollständigen Conduct-Regeln und alle übrigen Prompt-Abschnitte bleiben unverändert. In der ausgelieferten Standardvorlage sinkt der wiederholt gesendete Prompt dadurch um 1.010 Zeichen, also um etwa 253 geschätzte Token pro Modellanfrage. Fehlt eines der Conduct-Gegenstücke, bleibt die entsprechende ältere Regel unverändert erhalten.
137
139
 
138
140
  Ab BLUN King 9.1.118 bleibt der Sitzungszeitstempel im Systemprompt während einer laufenden Sitzung unverändert. Das erneute Einlesen von Verzeichnisübersicht, AGENTS.md-Dateien, Zusatzverzeichnissen und Skillinformationen kann den Prompt weiterhin ändern, wenn sich die jeweiligen Quellen tatsächlich verändert haben. Bleiben diese Quellen gleich, entwertet die Aktualisierung nach einer Verdichtung den Präfix-Cache des Anbieters nicht mehr allein durch einen neuen Zeitstempel. In Fredriks gemessener Sitzung unterschieden sich die beiden letzten Systemprompts mit jeweils 68.631 Zeichen nur in der Zeitangabe, und zwar erst nach einem gemeinsamen Präfix von 27.111 Zeichen. Der geänderte Zeitstempel verhinderte damit die Wiederverwendung der übrigen 41.512 unveränderten Zeichen aus dem Präfix-Cache.
@@ -362,6 +364,19 @@ der richtigen Reihenfolge: Der Statuspunkt und `UN` verwenden die Primärfarbe,
362
364
  `BL` bleibt weiß. Die Korrektur betrifft nur die Darstellung; Statuswerte,
363
365
  Profilname und Persona bleiben unverändert.
364
366
 
367
+ ## Einheitliche verwaltete Node-Laufzeit
368
+
369
+ Startet BLUN unter Windows oder macOS mit einer Node.js-Version vor 24.15.0,
370
+ richtet es eine private unterstützte Laufzeit ein und startet damit neu. Ab
371
+ BLUN King 9.1.135 steht das Verzeichnis dieser verwalteten Laufzeit auch im
372
+ `PATH` des Ersatzprozesses und aller untergeordneten Werkzeuge an erster Stelle.
373
+
374
+ Dadurch verwenden vom Agenten gestartete Befehle wie `node` und `npm` dieselbe
375
+ unterstützte Laufzeit wie die TUI, statt auf eine ältere Systeminstallation
376
+ zurückzufallen. Die globale Node-Installation des Systems wird nicht verändert.
377
+ OAuth, gespeicherte Anmeldedaten, Sitzungen und der Updatestatus bleiben
378
+ unverändert.
379
+
365
380
  ## Aktualisieren
366
381
 
367
382
  `blun update`, `king update` und die jeweilige Variante `upgrade` verwenden
@@ -310,11 +310,32 @@ function installTelegramForProfile(packageRoot, blunDir) {
310
310
  }
311
311
  }
312
312
 
313
+ function createManagedNodeEnvironment(binary, env = process.env, platform = process.platform) {
314
+ const pathImpl = platform === 'win32' ? path.win32 : path.posix;
315
+ const separator = platform === 'win32' ? path.win32.delimiter : path.posix.delimiter;
316
+ const pathKeys = Object.keys(env).filter((key) => key.toLowerCase() === 'path');
317
+ const targetKey = pathKeys[0] || (platform === 'win32' ? 'Path' : 'PATH');
318
+ const managedDirectory = pathImpl.dirname(pathImpl.resolve(binary));
319
+ const normalize = (value) => {
320
+ const resolved = pathImpl.normalize(value);
321
+ return platform === 'win32' ? resolved.toLowerCase() : resolved;
322
+ };
323
+ const managedIdentity = normalize(managedDirectory);
324
+ const existing = pathKeys.flatMap((key) => String(env[key] || '').split(separator))
325
+ .map((entry) => entry.trim())
326
+ .filter(Boolean)
327
+ .filter((entry) => normalize(entry) !== managedIdentity);
328
+ const result = { ...env };
329
+ for (const key of pathKeys) delete result[key];
330
+ result[targetKey] = [managedDirectory, ...existing].join(separator);
331
+ return result;
332
+ }
333
+
313
334
  function spawnManagedLauncher(binary, cwd) {
314
335
  return new Promise((resolve, reject) => {
315
336
  const child = spawn(binary, process.argv.slice(1), {
316
337
  cwd,
317
- env: process.env,
338
+ env: createManagedNodeEnvironment(binary, process.env, process.platform),
318
339
  stdio: 'inherit',
319
340
  windowsHide: true,
320
341
  });
@@ -590,6 +611,7 @@ async function runLauncher(options = {}) {
590
611
  }
591
612
 
592
613
  module.exports = {
614
+ createManagedNodeEnvironment,
593
615
  resolveLauncherPrivatePaths,
594
616
  runLauncher,
595
617
  shouldDetachProtectedCore,
@@ -1,5 +1,7 @@
1
1
  'use strict';
2
2
 
3
+ const LATEST_ONLY_INJECTION_VARIANTS = new Set(['mistake_md']);
4
+
3
5
  function repeatedInjectionKey(message) {
4
6
  if (message?.role !== 'user') return null;
5
7
  if (message?.origin?.kind !== 'injection') return null;
@@ -24,6 +26,7 @@ function dedupeRepeatedInjections(history) {
24
26
  kept.push(message);
25
27
  continue;
26
28
  }
29
+ if (LATEST_ONLY_INJECTION_VARIANTS.has(key.variant) && seenByVariant.has(key.variant)) continue;
27
30
  let seenTexts = seenByVariant.get(key.variant);
28
31
  if (seenTexts === undefined) {
29
32
  seenTexts = new Set();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blun-king-cli",
3
- "version": "9.1.134",
3
+ "version": "9.1.136",
4
4
  "description": "BLUN CLI - your own AI agent with a Telegram channel. Get it done. With BLUN.",
5
5
  "license": "MIT",
6
6
  "bin": {