blun-king-cli 9.1.88 → 9.1.89

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.87
12
+ npm install -g blun-king-cli@9.1.89
13
13
 
14
14
  Start
15
15
  -----
@@ -89,6 +89,8 @@ Dabei werden keine gespeicherten Nachrichten geändert oder gelöscht. Fortsetze
89
89
 
90
90
  Große textbasierte Werkzeugergebnisse bleiben nicht mehr vollständig im Modellkontext. Ab 12.001 Zeichen speichert BLUN King das vollständige Ergebnis in einer privaten Datei im Sitzungsordner `tool-results`. Im Modellkontext verbleiben die ersten 1.000 und die letzten 1.000 Zeichen, die genaue Zahl der ausgelassenen Zeichen und der `output_path`. Der Agent kann das vollständige Ergebnis anschließend mit `Read` seitenweise über diesen Pfad lesen. Ergebnisse bis einschließlich 12.000 Zeichen, gemischte Medienergebnisse und bereits gekürzte Ergebnisse bleiben unverändert. Auch eine spätere Mikroverdichtung bewahrt den Dateiverweis. Beispiel: Bei einem Suchergebnis mit 30.000 Zeichen sehen folgende Modellanfragen den Anfang und das abschließende Ergebnis oder den Fehler; der vollständige Text bleibt lokal verfügbar.
91
91
 
92
+ Große Dateien werden weiterhin seitenweise gelesen. Erreicht `Read` seine interne Grenze von 1.000 Zeilen und enthält die Datei weitere Zeilen, nennt das Ergebnis jetzt den exakten nächsten `line_offset`. Beispiel: Ein Lesevorgang ab Zeile 2001 wird mit `line_offset=3001` fortgesetzt. Am Dateiende und bei einem bewusst kleineren Leseausschnitt erscheint kein Fortsetzungshinweis. Dadurch zieht der Agent keine Schlüsse aus einem unvollständigen Ausschnitt und liest die Datei nicht erneut ab der ersten Zeile.
93
+
92
94
  Das Telemetrieereignis `tool_result_offloaded` enthält ausschließlich `tool_name`, `output_size_chars`, `output_size_bytes` und `preview_size_chars`. Es enthält weder den Inhalt noch den Speicherpfad. Beispiel: Eine Ausgabe mit 80.000 Zeichen erzeugt eine Vorschau mit 2.000 Zeichen; die Telemetrie zeigt die Größenersparnis, ohne Nutzdaten zu protokollieren.
93
95
 
94
96
  Reguläre `Agent`-Teilaufgaben verwenden eine eigene `ContextMemory` und eine eigene `wire.jsonl` in einem getrennten Agentenverzeichnis. Der Hauptagent erhält nur die Ergebniszusammenfassung, sodass lange Teilaufgaben nicht den Hauptverlauf füllen. `TodoList` speichert Pläne weiterhin maschinenlesbar im Sitzungs-Wire; `blun handoff` übergibt sie zusammen mit prüfbaren Hashes zwischen CLI, Desktop und Web.
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.88
12
+ npm install -g blun-king-cli@9.1.89
13
13
  ```
14
14
 
15
15
  ## Reproduzierbares Staging und Packen
@@ -109,6 +109,8 @@ Dabei werden keine gespeicherten Nachrichten geändert oder gelöscht. Fortsetze
109
109
 
110
110
  Große textbasierte Werkzeugergebnisse bleiben nicht mehr vollständig im Modellkontext. Ab 12.001 Zeichen speichert BLUN King das vollständige Ergebnis in einer privaten Datei im Sitzungsordner `tool-results`. Im Modellkontext verbleiben die ersten 1.000 und die letzten 1.000 Zeichen, die genaue Zahl der ausgelassenen Zeichen und der `output_path`. Der Agent kann das vollständige Ergebnis anschließend mit `Read` seitenweise über diesen Pfad lesen. Ergebnisse bis einschließlich 12.000 Zeichen, gemischte Medienergebnisse und bereits gekürzte Ergebnisse bleiben unverändert. Auch eine spätere Mikroverdichtung bewahrt den Dateiverweis. Beispiel: Bei einem Suchergebnis mit 30.000 Zeichen sehen folgende Modellanfragen den Anfang und das abschließende Ergebnis oder den Fehler; der vollständige Text bleibt lokal verfügbar.
111
111
 
112
+ Große Dateien werden weiterhin seitenweise gelesen. Erreicht `Read` seine interne Grenze von 1.000 Zeilen und enthält die Datei weitere Zeilen, nennt das Ergebnis jetzt den exakten nächsten `line_offset`. Beispiel: Ein Lesevorgang ab Zeile 2001 wird mit `line_offset=3001` fortgesetzt. Am Dateiende und bei einem bewusst kleineren Leseausschnitt erscheint kein Fortsetzungshinweis. Dadurch zieht der Agent keine Schlüsse aus einem unvollständigen Ausschnitt und liest die Datei nicht erneut ab der ersten Zeile.
113
+
112
114
  Das Telemetrieereignis `tool_result_offloaded` enthält ausschließlich `tool_name`, `output_size_chars`, `output_size_bytes` und `preview_size_chars`. Es enthält weder den Inhalt noch den Speicherpfad. Beispiel: Eine Ausgabe mit 80.000 Zeichen erzeugt eine Vorschau mit 2.000 Zeichen; die Telemetrie zeigt die Größenersparnis, ohne Nutzdaten zu protokollieren.
113
115
 
114
116
  Reguläre `Agent`-Teilaufgaben verwenden eine eigene `ContextMemory` und eine eigene `wire.jsonl` in einem getrennten Agentenverzeichnis. Der Hauptagent erhält nur die Ergebniszusammenfassung, sodass lange Teilaufgaben nicht den Hauptverlauf füllen. `TodoList` speichert Pläne weiterhin maschinenlesbar im Sitzungs-Wire; `blun handoff` übergibt sie zusammen mit prüfbaren Hashes zwischen CLI, Desktop und Web.
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ const READ_LINE_CAP = 1000;
4
+
5
+ function readContinuationNotice(input) {
6
+ if (input?.maxLinesReached !== true) return undefined;
7
+ if (!Number.isSafeInteger(input.lineOffset) || input.lineOffset < 1) return undefined;
8
+ if (!Number.isSafeInteger(input.effectiveLimit) || input.effectiveLimit < READ_LINE_CAP) return undefined;
9
+
10
+ const nextLineOffset = input.lineOffset + input.effectiveLimit;
11
+ if (!Number.isSafeInteger(nextLineOffset)) return undefined;
12
+ return `Continue reading with line_offset=${String(nextLineOffset)}. Do not assume you have reached the end of the file.`;
13
+ }
14
+
15
+ module.exports = {
16
+ READ_LINE_CAP,
17
+ readContinuationNotice,
18
+ };
package/blun.mjs CHANGED
@@ -258603,7 +258603,7 @@ function containsNulByte(text) {
258603
258603
  function notReadableFileOutput(path) {
258604
258604
  return `"${path}" is not readable as UTF-8 text. If it is an image or video, use ReadMediaFile. For other binary formats, use Bash or an MCP tool if available.`;
258605
258605
  }
258606
- var MAX_LINES$1, MAX_LINE_LENGTH, MAX_BYTES, S_IFMT$1, S_IFREG, PositiveLineOffsetSchema, TailLineOffsetSchema, ReadInputSchema, READ_DESCRIPTION, ReadTool;
258606
+ var MAX_LINES$1, MAX_LINE_LENGTH, MAX_BYTES, S_IFMT$1, S_IFREG, PositiveLineOffsetSchema, TailLineOffsetSchema, ReadInputSchema, READ_DESCRIPTION, ReadTool, readContinuationNotice;
258607
258607
  var init_read = __esmMin((() => {
258608
258608
  init_zod$1();
258609
258609
  init_tool_access();
@@ -258614,6 +258614,7 @@ var init_read = __esmMin((() => {
258614
258614
  init_rule_match();
258615
258615
  init_line_endings();
258616
258616
  init_read$1();
258617
+ ({ readContinuationNotice } = createRequire(import.meta.url)("./bin/read-continuation-policy.cjs"));
258617
258618
  MAX_LINES$1 = 1e3;
258618
258619
  MAX_LINE_LENGTH = 2e3;
258619
258620
  MAX_BYTES = 100 * 1024;
@@ -258740,7 +258741,9 @@ var init_read = __esmMin((() => {
258740
258741
  lineEndingStyle,
258741
258742
  startLine: selectedEntries.length > 0 ? lineOffset : 0,
258742
258743
  totalLines: scan.totalLines,
258743
- requestedLines
258744
+ requestedLines,
258745
+ lineOffset,
258746
+ effectiveLimit
258744
258747
  });
258745
258748
  }
258746
258749
  const selectedEntries = [];
@@ -258785,7 +258788,9 @@ var init_read = __esmMin((() => {
258785
258788
  lineEndingStyle,
258786
258789
  startLine: selectedEntries.length > 0 ? lineOffset : 0,
258787
258790
  totalLines: currentLineNo,
258788
- requestedLines
258791
+ requestedLines,
258792
+ lineOffset,
258793
+ effectiveLimit
258789
258794
  });
258790
258795
  }
258791
258796
  async readTail(safePath, displayPath, lineOffset, effectiveLimit, requestedLines) {
@@ -258900,6 +258905,8 @@ var init_read = __esmMin((() => {
258900
258905
  if (input.maxLinesReached) parts.push(`Max ${String(MAX_LINES$1)} lines reached.`);
258901
258906
  else if (input.maxBytesReached) parts.push(`Max ${String(MAX_BYTES)} bytes reached.`);
258902
258907
  else if (lineCount < input.requestedLines) parts.push("End of file reached.");
258908
+ const continuationNotice = readContinuationNotice(input);
258909
+ if (continuationNotice !== void 0) parts.push(continuationNotice);
258903
258910
  if (input.truncatedLineNumbers.length > 0) parts.push(`Lines [${input.truncatedLineNumbers.join(", ")}] were truncated.`);
258904
258911
  if (input.lineEndingStyle === "mixed") parts.push("Mixed or lone carriage-return line endings are shown as \\r. Use exact \\r\\n or \\r escapes in Edit.old_string for those lines.");
258905
258912
  return parts.join(" ");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blun-king-cli",
3
- "version": "9.1.88",
3
+ "version": "9.1.89",
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": {