blun-king-cli 9.1.107 → 9.1.108

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
@@ -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.106
12
+ npm install -g blun-king-cli@9.1.108
13
13
 
14
14
  Start
15
15
  -----
@@ -85,6 +85,8 @@ King bewahrt den vollständigen Verlauf weiterhin im Sitzungs-Wire auf. Erreicht
85
85
 
86
86
  Dabei werden keine gespeicherten Nachrichten geändert oder gelöscht. Fortsetzen, Exportieren und die sichtbare Historie behalten die ursprünglichen Werkzeugergebnisse und Werkzeugargumente. Das Telemetrieereignis `micro_compaction_finished` nennt den Auslöser, den Schnitt und die geschätzte Tokenzahl vor und nach der Entlastung. Außerdem zählt es getrennt, wie viele Werkzeugergebnisse und Werkzeugargumente entlastet wurden. Der Sitzungsinspektor summiert zusätzlich die eingesparten Argument-Token, ohne Inhalte offenzulegen. Beispiel: Ein früherer `Write`-Aufruf mit einem vollständigen Dateiinhalt bleibt im Wire erhalten; die Modellprojektion trägt nur noch einen Platzhalter, sobald für diesen `Write`-Aufruf ein zugehöriges Ergebnis vorliegt.
87
87
 
88
+ Ab BLUN King 9.1.108 entfernt die Modellprojektion außerdem identische, wiederholt eingespeiste Systemhinweise. Pro Hinweisart und exaktem Text bleibt die neueste Fassung erhalten; geänderte Hinweise, normale Nutzernachrichten, Werkzeugaufrufe und gemischte Inhalte bleiben unverändert. Der Sitzungs-Wire wird nicht umgeschrieben. Dadurch werden lange fortgesetzte Sitzungen kleiner an den Anbieter übertragen, ohne Verlauf, Export oder Wiederaufnahme zu verkürzen. Beispiel: Wird derselbe Werkzeughinweis bei 80 Zügen erneut eingespeist, sieht das Modell nur die neueste identische Fassung. Ändert sich der Hinweis, bleiben beide Fassungen sichtbar.
89
+
88
90
  Ab BLUN King 9.1.98 kann King einen abgeschlossenen Arbeitsabschnitt verdichten, bevor die harte automatische Grenze erreicht ist. Unterhalb der halben Vollverdichtungsgrenze bleibt `CompactConversation` vollständig aus dem Modellprompt. Ab 128.000 geschätzten Token im Standardmodellfenster wird es für den nächsten Modellschritt verfügbar. Die Verdichtung beginnt erst nach Abschluss des aktuellen Werkzeugschritts, öffnet keinen konkurrierenden Zug und lässt den ursprünglichen Verlauf bei einem Fehlschlag unverändert.
89
91
 
90
92
  ## Große Werkzeugausgaben und isolierte Teilagenten
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ function repeatedInjectionKey(message) {
4
+ if (message?.role !== 'user') return null;
5
+ if (message?.origin?.kind !== 'injection') return null;
6
+ const variant = String(message.origin.variant || '').trim();
7
+ if (!variant) return null;
8
+ if (!Array.isArray(message.content) || message.content.length !== 1) return null;
9
+ const part = message.content[0];
10
+ if (part?.type !== 'text' || typeof part.text !== 'string') return null;
11
+ if (Array.isArray(message.toolCalls) && message.toolCalls.length > 0) return null;
12
+ return { variant, text: part.text };
13
+ }
14
+
15
+ function dedupeRepeatedInjections(history) {
16
+ if (!Array.isArray(history) || history.length < 2) return history;
17
+ const seenByVariant = new Map();
18
+ const kept = [];
19
+
20
+ for (let index = history.length - 1; index >= 0; index -= 1) {
21
+ const message = history[index];
22
+ const key = repeatedInjectionKey(message);
23
+ if (key === null) {
24
+ kept.push(message);
25
+ continue;
26
+ }
27
+ let seenTexts = seenByVariant.get(key.variant);
28
+ if (seenTexts === undefined) {
29
+ seenTexts = new Set();
30
+ seenByVariant.set(key.variant, seenTexts);
31
+ }
32
+ if (seenTexts.has(key.text)) continue;
33
+ seenTexts.add(key.text);
34
+ kept.push(message);
35
+ }
36
+
37
+ kept.reverse();
38
+ return kept.length === history.length ? history : kept;
39
+ }
40
+
41
+ module.exports = {
42
+ dedupeRepeatedInjections,
43
+ repeatedInjectionKey,
44
+ };
package/blun.mjs CHANGED
@@ -75970,10 +75970,11 @@ var init_full = __esmMin((() => {
75970
75970
  }));
75971
75971
  //#endregion
75972
75972
  //#region ../../packages/agent-core/src/agent/compaction/micro.ts
75973
- var selectMicroCompactionCutoff, isPersistedToolResultReference, DEFAULT_CONFIG, MicroCompaction;
75973
+ var selectMicroCompactionCutoff, isPersistedToolResultReference, dedupeRepeatedInjections, DEFAULT_CONFIG, MicroCompaction;
75974
75974
  var init_micro = __esmMin((() => {
75975
75975
  ({ selectMicroCompactionCutoff } = createRequire(import.meta.url)("./bin/micro-compaction-policy.cjs"));
75976
75976
  ({ isPersistedToolResultReference } = createRequire(import.meta.url)("./bin/tool-result-offload-policy.cjs"));
75977
+ ({ dedupeRepeatedInjections } = createRequire(import.meta.url)("./bin/repeated-injection-projection.cjs"));
75977
75978
  init_tokens();
75978
75979
  DEFAULT_CONFIG = {
75979
75980
  keepRecentMessages: 20,
@@ -78940,7 +78941,7 @@ var init_context$2 = __esmMin((() => {
78940
78941
  }
78941
78942
  project(messages, options) {
78942
78943
  const anomalies = [];
78943
- const result = project(this.agent.userMessageOffload.compact(this.agent.microCompaction.compact(this.agent.toolResultBatchOffload.compact(messages))), {
78944
+ const result = project(this.agent.userMessageOffload.compact(this.agent.microCompaction.compact(this.agent.toolResultBatchOffload.compact(dedupeRepeatedInjections(messages)))), {
78944
78945
  ...options,
78945
78946
  onAnomaly: (anomaly) => {
78946
78947
  anomalies.push(anomaly);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blun-king-cli",
3
- "version": "9.1.107",
3
+ "version": "9.1.108",
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": {