blun-king-cli 9.1.108 → 9.1.110
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 +2 -0
- package/README.md +2 -0
- package/bin/turn-tool-performance-policy.cjs +0 -14
- package/blun.mjs +10 -3
- package/package.json +1 -1
package/LIESMICH.txt
CHANGED
|
@@ -111,6 +111,8 @@ Version 9.1.105 ergänzt `TaskUpdate` für laufende Hintergrundagenten. King üb
|
|
|
111
111
|
|
|
112
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.
|
|
113
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
|
+
|
|
114
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.
|
|
115
117
|
|
|
116
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.
|
|
@@ -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
|
@@ -1654,9 +1654,11 @@ var init_errors$10 = __esmMin((() => {
|
|
|
1654
1654
|
}
|
|
1655
1655
|
};
|
|
1656
1656
|
APIProviderRateLimitError = class extends APIStatusError {
|
|
1657
|
-
|
|
1657
|
+
retryAfterMs;
|
|
1658
|
+
constructor(message, requestId, retryAfterMs) {
|
|
1658
1659
|
super(429, message, requestId);
|
|
1659
1660
|
this.name = "APIProviderRateLimitError";
|
|
1661
|
+
this.retryAfterMs = typeof retryAfterMs === "number" && Number.isFinite(retryAfterMs) && retryAfterMs >= 0 ? retryAfterMs : null;
|
|
1660
1662
|
}
|
|
1661
1663
|
};
|
|
1662
1664
|
APIPaymentRequiredError = class extends APIStatusError {
|
|
@@ -1849,6 +1851,7 @@ async function responseError(response) {
|
|
|
1849
1851
|
apiCode: code,
|
|
1850
1852
|
retryAfterMs: retryAfterHeaderMs(response.headers)
|
|
1851
1853
|
});
|
|
1854
|
+
if (response.status === 429) return new APIProviderRateLimitError(message, requestId, retryAfterHeaderMs(response.headers));
|
|
1852
1855
|
return normalizeAPIStatusError(response.status, message, requestId);
|
|
1853
1856
|
}
|
|
1854
1857
|
function retryAfterHeaderMs(headers) {
|
|
@@ -30322,7 +30325,7 @@ async function chatWithRetry(input) {
|
|
|
30322
30325
|
logRequestFailure(input, error, attempt, maxAttempts);
|
|
30323
30326
|
throw error;
|
|
30324
30327
|
}
|
|
30325
|
-
const delayMs = delays[attempt - 1] ?? 0;
|
|
30328
|
+
const delayMs = retryDelayForError(error, delays[attempt - 1] ?? 0);
|
|
30326
30329
|
input.params.signal.throwIfAborted();
|
|
30327
30330
|
input.dispatchEvent({
|
|
30328
30331
|
type: "step.retrying",
|
|
@@ -30338,6 +30341,10 @@ async function chatWithRetry(input) {
|
|
|
30338
30341
|
await sleepForRetry(delayMs, input.params.signal);
|
|
30339
30342
|
}
|
|
30340
30343
|
}
|
|
30344
|
+
function retryDelayForError(error, fallbackDelayMs) {
|
|
30345
|
+
if (!(error instanceof APIProviderRateLimitError) || error.retryAfterMs === null) return fallbackDelayMs;
|
|
30346
|
+
return Math.max(fallbackDelayMs, error.retryAfterMs);
|
|
30347
|
+
}
|
|
30341
30348
|
function logRequestFailure(input, error, attempt, maxAttempts) {
|
|
30342
30349
|
if (isAbortError$4(error) || input.params.signal.aborted) return;
|
|
30343
30350
|
input.log?.warn("llm request failed", {
|
|
@@ -257727,7 +257734,7 @@ var init_rg_locator = __esmMin((() => {
|
|
|
257727
257734
|
import_yauzl$2 = require_yauzl();
|
|
257728
257735
|
init_abort();
|
|
257729
257736
|
RG_VERSION = "15.0.0";
|
|
257730
|
-
RG_BASE_URL =
|
|
257737
|
+
RG_BASE_URL = `https://github.com/BurntSushi/ripgrep/releases/download/${RG_VERSION}`;
|
|
257731
257738
|
DOWNLOAD_TIMEOUT_MS$1 = 6e5;
|
|
257732
257739
|
RG_ARCHIVE_SHA256 = {
|
|
257733
257740
|
"ripgrep-15.0.0-aarch64-apple-darwin.tar.gz": "98bb2e61e7277ba0ea72d2ae2592497fd8d2940934a16b122448d302a6637e3b",
|