blun-king-cli 9.1.88 → 9.1.90

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.90
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.90
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(" ");
@@ -261740,6 +261747,7 @@ var init_bash = __esmMin((() => {
261740
261747
  MAX_TIMEOUT_S,
261741
261748
  MAX_BACKGROUND_TIMEOUT_S
261742
261749
  };
261750
+ bash_default = "Execute a `{{ SHELL_NAME }}` command for pipes, environment variables, processes, git, package managers, build or test runners, and other genuine shell semantics.\n\nPrefer the dedicated tools when they fit: `Read` for a known file, `Write` to create or replace a file, `Edit` for exact changes, `Glob` to locate files, and `Grep` to search contents. Their output is bounded and their permissions are clearer.\n\nStdout and stderr are combined. Long output may be truncated. A non-zero command ends with its exit code; timeouts and user interrupts are reported separately.\n\nEach call runs in a fresh shell environment. Variables, `cd`, and shell history do not carry into later calls; pass `cwd` or use absolute paths. Foreground commands default to {{ DEFAULT_TIMEOUT_S }}s and allow up to {{ MAX_TIMEOUT_S }}s through `timeout`. Do not run interactive commands or commands that may run forever in the foreground.\n\nWith `run_in_background=true`, provide a short `description`; the tool returns a task ID and notifies you on completion. Background tasks default to {{ DEFAULT_BACKGROUND_TIMEOUT_S }}s and allow up to {{ MAX_BACKGROUND_TIMEOUT_S }}s. Use `disable_timeout=true` only when no deadline is appropriate. Use `TaskOutput` for a status or output snapshot and `TaskStop` only to cancel. After launch, normally return control instead of immediately waiting.\n\nQuote paths containing spaces. Chain dependent commands with `&&`; issue independent read-only checks as parallel tool calls. Use `;`, `||`, pipes, redirects, and shell control flow when their semantics are required.\n\nStay inside the working directory unless the user explicitly requests otherwise. Avoid `..`, and never require superuser privileges without explicit instruction. Command availability depends on the host; verify unfamiliar commands before relying on them.";
261743
261751
  BashTool = class {
261744
261752
  kaos;
261745
261753
  cwd;
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.90",
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": {