blun-king-cli 9.1.107 → 9.1.109

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
@@ -109,6 +111,8 @@ Version 9.1.105 ergänzt `TaskUpdate` für laufende Hintergrundagenten. King üb
109
111
 
110
112
  Version 9.1.106 erlaubt Agentenprofilen, Werkzeuge namentlich auszuschließen. King wendet diese Ausschlüsse erst an, nachdem dauerhaft geladene, dynamisch nachgeladene und MCP-Werkzeuge zusammengestellt wurden. Die Standardprofile `coder`, `explore` und `plan` können über Telegram weder antworten noch reagieren, Nachrichten bearbeiten oder Anhänge herunterladen; der Hauptagent bleibt unverändert. So senden delegierte Agenten keine Nachrichten am Hauptagenten vorbei, und ihre Modellanfragen enthalten weniger Werkzeugschemas. Nicht gefundene, namentlich angegebene Werkzeuge werden sichtbar gemeldet.
111
113
 
114
+ Version 9.1.109 hält nur noch die neun Werkzeuge dauerhaft in der Modellanfrage, auf die mehr als 98 Prozent von Fredriks 3.183 gemessenen Werkzeugaufrufen entfielen. Alle übrigen Werkzeuge bleiben über `ToolSearch` auffindbar und nach dem ersten Laden für den Rest der Sitzung verfügbar. Dadurch sinkt die Schemalast bei jedem normalen Modellschritt, ohne ein Werkzeug zu entfernen oder den Schnellweg für Telegram-Antworten und ausstehende Medienergebnisse zu verändern.
115
+
112
116
  Verliert ein delegierter Einzelagent oder ein Mitglied eines Agentenschwarms die Provider-Verbindung, erhält es eine leere Provider-Antwort, bricht sein Stream wegen Leerlaufs ab oder meldet der Server HTTP 408/500/502/503/504, setzt BLUN King denselben Agenten anhand seines dauerhaften Verlaufs fort. Bei Einzelagenten sowie bei Schwarm-Unterbrechungen außerhalb von HTTP 429 wartet die erste Fortsetzung zwei Sekunden und die zweite fünf Sekunden; danach bleibt der ursprüngliche Fehler sichtbar. HTTP 429 behält im Schwarm seine getrennte, längere Überlastungsregel. Authentifizierungs-, Zahlungs- oder Kontingent-, Richtlinien-, Kontext-, Werkzeug- und Codefehler sowie manuelle Abbrüche lösen keine automatische Fortsetzung aus. Jeder Fortsetzungsversuch verwendet die bestehende Agenten-ID, damit bereits abgeschlossene Arbeit nicht wiederholt wird.
113
117
 
114
118
  Rein lesende Sitzungsdiagnose
package/README.md CHANGED
@@ -117,6 +117,8 @@ Version 9.1.105 ergänzt `TaskUpdate` für laufende Hintergrundagenten. King üb
117
117
 
118
118
  Version 9.1.106 erlaubt Agentenprofilen, Werkzeuge namentlich auszuschließen. King wendet diese Ausschlüsse erst an, nachdem dauerhaft geladene, dynamisch nachgeladene und MCP-Werkzeuge zusammengestellt wurden. Die Standardprofile `coder`, `explore` und `plan` können über Telegram weder antworten noch reagieren, Nachrichten bearbeiten oder Anhänge herunterladen; der Hauptagent bleibt unverändert. So senden delegierte Agenten keine Nachrichten am Hauptagenten vorbei, und ihre Modellanfragen enthalten weniger Werkzeugschemas. Nicht gefundene, namentlich angegebene Werkzeuge werden sichtbar gemeldet.
119
119
 
120
+ Version 9.1.109 hält nur noch die neun Werkzeuge dauerhaft in der Modellanfrage, auf die mehr als 98 Prozent von Fredriks 3.183 gemessenen Werkzeugaufrufen entfielen. Alle übrigen Werkzeuge bleiben über `ToolSearch` auffindbar und nach dem ersten Laden für den Rest der Sitzung verfügbar. Dadurch sinkt die Schemalast bei jedem normalen Modellschritt, ohne ein Werkzeug zu entfernen oder den Schnellweg für Telegram-Antworten und ausstehende Medienergebnisse zu verändern.
121
+
120
122
  Ab BLUN King 9.1.99 werden auch direkt aufeinanderfolgende reine Textergebnisse als Stapel betrachtet. Enthalten sie zusammen mehr als 12.000 Zeichen, obwohl kein einzelnes Ergebnis diese Grenze überschreitet, speichert King so viele der größten geeigneten Ergebnisse wie nötig in privaten Dateien. In der Modellprojektion verbleiben lesbare Verweise. Der unveränderte Sitzungsrohverlauf bleibt vollständig erhalten. Gemischte Medienergebnisse, einzelne Ergebnisse unter 3.000 Zeichen und Stapel bis einschließlich 12.000 Zeichen bleiben unverändert. Beispiel: Bei zwei Suchergebnissen mit 7.000 und 6.000 Zeichen wird das größere Ergebnis privat gespeichert; Anfang, Ende, ausgelassene Zeichenzahl und `output_path` bleiben für den Agenten sichtbar.
121
123
 
122
124
  Ab BLUN King 9.1.100 beendet eine begrenzte Grep-Inhaltssuche ripgrep, sobald der Versatz, die angeforderten Zeilen und eine zusätzliche Vorschauzeile vollständig vorliegen. Die Vorschauzeile belegt, ob eine weitere Seite existiert, ohne vorher bis zu 10 MB einzulesen. Unbegrenzte Suchen, Trefferzählungen und nach Änderungszeit sortierte Dateilisten laufen weiterhin vollständig durch.
@@ -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
+ };
@@ -9,24 +9,10 @@ const CORE_TOOL_NAMES = Object.freeze([
9
9
  'Edit',
10
10
  'Grep',
11
11
  'Write',
12
- 'TodoList',
13
- 'CompactConversation',
14
12
  'Glob',
15
- 'TaskList',
16
- 'Agent',
17
- 'GetGoal',
18
- 'CronList',
19
- 'ReadMediaFile',
20
- 'TaskOutput',
21
- 'Skill',
22
13
  'GenerateImage',
23
14
  'GenerateVideo',
24
- 'GenerateSpeech',
25
- 'GetMedia',
26
15
  'mcp__plugin-telegram_telegram__reply',
27
- 'mcp__plugin-telegram_telegram__react',
28
- 'mcp__plugin-telegram_telegram__edit_message',
29
- 'mcp__plugin-telegram_telegram__download_attachment',
30
16
  ]);
31
17
 
32
18
  function toolSchemaBudgetTokens(maxContextTokens) {
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.109",
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": {