blun-king-cli 9.1.155 → 9.1.157
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 +4 -0
- package/README.md +2 -0
- package/bin/tool-result-offload-policy.cjs +32 -0
- package/bin/user-message-offload-policy.cjs +34 -0
- package/blun.mjs +7 -4
- package/package.json +1 -1
package/LIESMICH.txt
CHANGED
|
@@ -149,6 +149,10 @@ Ab BLUN King 9.1.147 schützt die Mikroverdichtung die neuesten zwölf Nachricht
|
|
|
149
149
|
|
|
150
150
|
Ab BLUN King 9.1.148 werden auch im neuesten gemischten Telegram-Paket die ausdrücklich mit addressed=false markierten Kanalabschnitte verkleinert. Adressierte Abschnitte, Medien, Rohverlauf und Exporte bleiben unverändert. In Fredriks vermessenem Verlauf sinken elf nicht adressierte Abschnitte von 22.691 auf 2.750 Zeichen; das spart 19.941 Zeichen beziehungsweise rund 4.986 geschätzte Token pro wiederholter Anfrage.
|
|
151
151
|
|
|
152
|
+
Ab BLUN King 9.1.156 wiederholen gespeicherte Verweise auf Nutzernachrichten außerhalb der neuesten 20 Nachrichten ihre Vorschau mit Anfang und Ende nicht mehr bei jeder Modellanfrage. Wiederherstellungsmarkierung, Größenangaben, lesbarer Dateipfad, die neuesten 20 Nachrichten, Medien, Rohverlauf, vollständig gespeicherte Datei und Exporte bleiben unverändert. In Fredriks stabil vermessenem Schnappschuss werden fünf historische Verweise verkleinert und die Modellprojektion sinkt von 99.143 auf 96.001 Zeichen. Das spart weitere 3.142 Zeichen beziehungsweise rund 786 geschätzte Eingabetoken pro gleich aufgebauter Anfrage.
|
|
153
|
+
|
|
154
|
+
Ab BLUN King 9.1.157 werden geeignete erfolgreiche, rein textbasierte Werkzeugausgaben außerhalb der neuesten 20 Nachrichten in der Modellprojektion durch einen kurzen Abschlussvermerk ersetzt. Fehlerausgaben, Medien, ausgelagerte Dateiverweise, die neuesten 20 Nachrichten, Rohverlauf und Exporte bleiben unverändert. In Fredriks stabil vermessenem Sitzungsschnappschuss werden 43 alte Ergebnisse verkleinert. Das spart 9.680 Zeichen beziehungsweise rund 2.420 geschätzte Eingabetoken pro gleich aufgebauter Anfrage.
|
|
155
|
+
|
|
152
156
|
Ab BLUN King 9.1.155 werden gespeicherte Verweise auf Nutzernachrichten wiederhergestellt, bevor Textprojektionen den Hash der ursprünglichen Nachricht verändern können. Bestehende Auslagerungen bleiben dadurch wirksam, statt unbemerkt auf die projizierte vollständige Nachricht zurückzufallen. Rohverlauf, wiederlesbare Dateiverweise, die neuesten 20 Nachrichten, Medien und Exporte bleiben unverändert. In Fredriks stabil vermessenem Schnappschuss sinkt die Modellprojektion von 105.810 auf 99.143 Zeichen. Das spart weitere 6.667 Zeichen beziehungsweise rund 1.667 geschätzte Eingabetoken pro gleich aufgebauter Anfrage.
|
|
153
157
|
|
|
154
158
|
Ab BLUN King 9.1.154 werden adressierte Telegram-Kanalabschnitte außerhalb der neuesten 20 Nachrichten auf eine 500 statt 1.000 Zeichen lange Vorschau mit Anfang und Ende begrenzt. Vollständige Kanalmetadaten, Anfang und Ende des Nachrichteninhalts, die neuesten 20 Nachrichten, Anhänge, Rohverlauf und Exporte bleiben unverändert. In Fredriks stabil vermessenem Schnappschuss werden sieben zusätzliche historische adressierte Abschnitte verkleinert. Das spart 3.500 Zeichen beziehungsweise rund 875 geschätzte Token pro wiederholter Anfrage.
|
package/README.md
CHANGED
|
@@ -157,6 +157,8 @@ Ab BLUN King 9.1.147 schützt die Mikroverdichtung die neuesten zwölf Nachricht
|
|
|
157
157
|
|
|
158
158
|
Ab BLUN King 9.1.148 werden auch im neuesten gemischten Telegram-Paket die ausdrücklich mit addressed=false markierten Kanalabschnitte verkleinert. Adressierte Abschnitte, Medien, Rohverlauf und Exporte bleiben unverändert. In Fredriks vermessenem Verlauf sinken elf nicht adressierte Abschnitte von 22.691 auf 2.750 Zeichen; das spart 19.941 Zeichen beziehungsweise rund 4.986 geschätzte Token pro wiederholter Anfrage.
|
|
159
159
|
|
|
160
|
+
Ab BLUN King 9.1.156 wiederholen gespeicherte Verweise auf Nutzernachrichten außerhalb der neuesten 20 Nachrichten ihre Vorschau mit Anfang und Ende nicht mehr bei jeder Modellanfrage. Wiederherstellungsmarkierung, Größenangaben, lesbarer Dateipfad, die neuesten 20 Nachrichten, Medien, Rohverlauf, vollständig gespeicherte Datei und Exporte bleiben unverändert. In Fredriks stabil vermessenem Schnappschuss werden fünf historische Verweise verkleinert und die Modellprojektion sinkt von 99.143 auf 96.001 Zeichen. Das spart weitere 3.142 Zeichen beziehungsweise rund 786 geschätzte Eingabetoken pro gleich aufgebauter Anfrage.
|
|
161
|
+
|
|
160
162
|
Ab BLUN King 9.1.155 werden gespeicherte Verweise auf Nutzernachrichten wiederhergestellt, bevor Textprojektionen den Hash der ursprünglichen Nachricht verändern können. Bestehende Auslagerungen bleiben dadurch wirksam, statt unbemerkt auf die projizierte vollständige Nachricht zurückzufallen. Rohverlauf, wiederlesbare Dateiverweise, die neuesten 20 Nachrichten, Medien und Exporte bleiben unverändert. In Fredriks stabil vermessenem Schnappschuss sinkt die Modellprojektion von 105.810 auf 99.143 Zeichen. Das spart weitere 6.667 Zeichen beziehungsweise rund 1.667 geschätzte Eingabetoken pro gleich aufgebauter Anfrage.
|
|
161
163
|
|
|
162
164
|
Ab BLUN King 9.1.154 werden adressierte Telegram-Kanalabschnitte außerhalb der neuesten 20 Nachrichten auf eine 500 statt 1.000 Zeichen lange Vorschau mit Anfang und Ende begrenzt. Vollständige Kanalmetadaten, Anfang und Ende des Nachrichteninhalts, die neuesten 20 Nachrichten, Anhänge, Rohverlauf und Exporte bleiben unverändert. In Fredriks stabil vermessenem Schnappschuss werden sieben zusätzliche historische adressierte Abschnitte verkleinert. Das spart 3.500 Zeichen beziehungsweise rund 875 geschätzte Token pro wiederholter Anfrage.
|
|
@@ -10,6 +10,8 @@ const TOOL_RESULT_HISTORICAL_KEEP_RECENT_MESSAGES = 4;
|
|
|
10
10
|
const TOOL_RESULT_HISTORICAL_MAX_CHARS = TOOL_RESULT_BATCH_MAX_CHARS;
|
|
11
11
|
const TOOL_RESULT_HISTORICAL_MIN_ITEM_CHARS = 600;
|
|
12
12
|
const TOOL_RESULT_HISTORICAL_REPLACEMENT_BUDGET_CHARS = 600;
|
|
13
|
+
const TOOL_RESULT_SUCCESS_KEEP_RECENT_MESSAGES = 20;
|
|
14
|
+
const TOOL_RESULT_HISTORICAL_SUCCESS_MARKER = '[Old tool result content cleared]';
|
|
13
15
|
|
|
14
16
|
function shouldOffloadToolResult(textLength) {
|
|
15
17
|
return Number.isFinite(textLength) && textLength > TOOL_RESULT_MAX_CHARS;
|
|
@@ -72,6 +74,33 @@ function compactPersistedToolResultReference(content) {
|
|
|
72
74
|
return changed ? compacted : content;
|
|
73
75
|
}
|
|
74
76
|
|
|
77
|
+
function compactHistoricalSuccessfulToolResults(messages) {
|
|
78
|
+
if (!Array.isArray(messages) || messages.length === 0) return messages;
|
|
79
|
+
|
|
80
|
+
const recentStart = Math.max(0, messages.length - TOOL_RESULT_SUCCESS_KEEP_RECENT_MESSAGES);
|
|
81
|
+
let changed = false;
|
|
82
|
+
const projected = messages.map((message, index) => {
|
|
83
|
+
if (
|
|
84
|
+
index >= recentStart
|
|
85
|
+
|| message?.role !== 'tool'
|
|
86
|
+
|| message.isError === true
|
|
87
|
+
|| !Array.isArray(message.content)
|
|
88
|
+
|| isPersistedToolResultReference(message.content)
|
|
89
|
+
|| !message.content.every((part) => part?.type === 'text' && typeof part.text === 'string')
|
|
90
|
+
) return message;
|
|
91
|
+
|
|
92
|
+
const textChars = message.content.reduce((total, part) => total + part.text.length, 0);
|
|
93
|
+
if (textChars <= TOOL_RESULT_HISTORICAL_SUCCESS_MARKER.length) return message;
|
|
94
|
+
changed = true;
|
|
95
|
+
return {
|
|
96
|
+
...message,
|
|
97
|
+
content: [{ type: 'text', text: TOOL_RESULT_HISTORICAL_SUCCESS_MARKER }],
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
return changed ? projected : messages;
|
|
102
|
+
}
|
|
103
|
+
|
|
75
104
|
function selectToolResultBatchOffloads(textLengths) {
|
|
76
105
|
if (!Array.isArray(textLengths) || textLengths.length < 2) return [];
|
|
77
106
|
|
|
@@ -139,9 +168,12 @@ module.exports = {
|
|
|
139
168
|
TOOL_RESULT_HISTORICAL_MAX_CHARS,
|
|
140
169
|
TOOL_RESULT_HISTORICAL_MIN_ITEM_CHARS,
|
|
141
170
|
TOOL_RESULT_HISTORICAL_REPLACEMENT_BUDGET_CHARS,
|
|
171
|
+
TOOL_RESULT_HISTORICAL_SUCCESS_MARKER,
|
|
142
172
|
TOOL_RESULT_MAX_CHARS,
|
|
143
173
|
TOOL_RESULT_PREVIEW_CHARS,
|
|
144
174
|
TOOL_RESULT_OFFLOAD_MARKER,
|
|
175
|
+
TOOL_RESULT_SUCCESS_KEEP_RECENT_MESSAGES,
|
|
176
|
+
compactHistoricalSuccessfulToolResults,
|
|
145
177
|
compactPersistedToolResultReference,
|
|
146
178
|
createToolResultPreview,
|
|
147
179
|
isPersistedToolResultReference,
|
|
@@ -45,6 +45,39 @@ function createUserMessagePreview(text) {
|
|
|
45
45
|
].join('\n');
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
function compactHistoricalPersistedUserMessageReferences(messages) {
|
|
49
|
+
if (!Array.isArray(messages) || messages.length === 0) return messages;
|
|
50
|
+
|
|
51
|
+
const recentStart = Math.max(0, messages.length - USER_MESSAGE_KEEP_RECENT_MESSAGES);
|
|
52
|
+
return messages.map((message, index) => {
|
|
53
|
+
if (
|
|
54
|
+
index >= recentStart
|
|
55
|
+
|| message?.role !== 'user'
|
|
56
|
+
|| message.origin?.kind !== 'user'
|
|
57
|
+
|| !Array.isArray(message.content)
|
|
58
|
+
) return message;
|
|
59
|
+
|
|
60
|
+
let changed = false;
|
|
61
|
+
const content = message.content.map((part) => {
|
|
62
|
+
if (
|
|
63
|
+
part?.type !== 'text'
|
|
64
|
+
|| typeof part.text !== 'string'
|
|
65
|
+
|| !part.text.startsWith(`${USER_MESSAGE_OFFLOAD_MARKER}\n`)
|
|
66
|
+
|| !part.text.includes('\noutput_path: ')
|
|
67
|
+
) return part;
|
|
68
|
+
const previewIndex = part.text.indexOf('\n[preview: head and tail]\n');
|
|
69
|
+
if (previewIndex < 0) return part;
|
|
70
|
+
changed = true;
|
|
71
|
+
return {
|
|
72
|
+
...part,
|
|
73
|
+
text: part.text.slice(0, previewIndex).trimEnd(),
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
return changed ? { ...message, content } : message;
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
|
|
48
81
|
module.exports = {
|
|
49
82
|
HISTORICAL_USER_MESSAGE_MAX_CHARS,
|
|
50
83
|
USER_MESSAGE_MAX_CHARS,
|
|
@@ -52,6 +85,7 @@ module.exports = {
|
|
|
52
85
|
USER_MESSAGE_OFFLOAD_MARKER,
|
|
53
86
|
USER_MESSAGE_PREVIEW_LINES,
|
|
54
87
|
USER_MESSAGE_PREVIEW_LINE_CHARS,
|
|
88
|
+
compactHistoricalPersistedUserMessageReferences,
|
|
55
89
|
createUserMessagePreview,
|
|
56
90
|
shouldOffloadHistoricalUserMessage,
|
|
57
91
|
shouldOffloadUserMessage,
|
package/blun.mjs
CHANGED
|
@@ -78965,8 +78965,9 @@ var init_context$2 = __esmMin((() => {
|
|
|
78965
78965
|
project(messages, options) {
|
|
78966
78966
|
const anomalies = [];
|
|
78967
78967
|
const userOffloaded = this.agent.userMessageOffload.compact(messages);
|
|
78968
|
-
const
|
|
78969
|
-
const
|
|
78968
|
+
const historicalUserReferencesProjected = compactHistoricalPersistedUserMessageReferences(userOffloaded);
|
|
78969
|
+
const historicalTelegramProjected = projectHistoricalUnaddressedTelegramMessages(historicalUserReferencesProjected);
|
|
78970
|
+
const result = project(this.agent.assistantMessageOffload.compact(this.agent.microCompaction.compact(compactHistoricalSuccessfulToolResults(this.agent.toolResultBatchOffload.compact(dedupeRecurringCronWakeups(dedupeRepeatedInjections(compactBaselineSkillInjections(historicalTelegramProjected))))))), {
|
|
78970
78971
|
...options,
|
|
78971
78972
|
onAnomaly: (anomaly) => {
|
|
78972
78973
|
anomalies.push(anomaly);
|
|
@@ -260409,7 +260410,7 @@ function renderHistoricalToolResultReference(toolName, toolCallId, text, outputP
|
|
|
260409
260410
|
function safeToolResultFileStem(toolName, toolCallId) {
|
|
260410
260411
|
return `${toolName}-${toolCallId}`.replace(/[^a-zA-Z0-9._-]+/g, "_").replace(/^_+|_+$/g, "").slice(0, 80) || "tool-result";
|
|
260411
260412
|
}
|
|
260412
|
-
var TOOL_RESULT_MAX_CHARS, TOOL_RESULT_PREVIEW_CHARS, TOOL_RESULT_OFFLOAD_MARKER, TOOL_RESULT_HISTORICAL_KEEP_RECENT_MESSAGES, shouldOffloadToolResult, createToolResultPreview, compactPersistedToolResultReference, selectToolResultBatchOffloads, selectHistoricalToolResultOffloads, buildToolResultOffloadTelemetry;
|
|
260413
|
+
var TOOL_RESULT_MAX_CHARS, TOOL_RESULT_PREVIEW_CHARS, TOOL_RESULT_OFFLOAD_MARKER, TOOL_RESULT_HISTORICAL_KEEP_RECENT_MESSAGES, shouldOffloadToolResult, createToolResultPreview, compactPersistedToolResultReference, compactHistoricalSuccessfulToolResults, selectToolResultBatchOffloads, selectHistoricalToolResultOffloads, buildToolResultOffloadTelemetry;
|
|
260413
260414
|
var init_tool_result_budget = __esmMin((() => {
|
|
260414
260415
|
init_dist$6();
|
|
260415
260416
|
const toolResultOffloadPolicy = createRequire(import.meta.url)("./bin/tool-result-offload-policy.cjs");
|
|
@@ -260421,6 +260422,7 @@ var init_tool_result_budget = __esmMin((() => {
|
|
|
260421
260422
|
shouldOffloadToolResult = toolResultOffloadPolicy.shouldOffloadToolResult;
|
|
260422
260423
|
createToolResultPreview = toolResultOffloadPolicy.createToolResultPreview;
|
|
260423
260424
|
compactPersistedToolResultReference = toolResultOffloadPolicy.compactPersistedToolResultReference;
|
|
260425
|
+
compactHistoricalSuccessfulToolResults = toolResultOffloadPolicy.compactHistoricalSuccessfulToolResults;
|
|
260424
260426
|
selectToolResultBatchOffloads = toolResultOffloadPolicy.selectToolResultBatchOffloads;
|
|
260425
260427
|
selectHistoricalToolResultOffloads = toolResultOffloadPolicy.selectHistoricalToolResultOffloads;
|
|
260426
260428
|
}));
|
|
@@ -260620,7 +260622,7 @@ function renderPersistedUserMessage(text, outputPath) {
|
|
|
260620
260622
|
createUserMessagePreview(text)
|
|
260621
260623
|
].join("\n");
|
|
260622
260624
|
}
|
|
260623
|
-
var USER_MESSAGE_MAX_CHARS, USER_MESSAGE_OFFLOAD_MARKER, shouldOffloadUserMessage, shouldOffloadHistoricalUserMessage, createUserMessagePreview;
|
|
260625
|
+
var USER_MESSAGE_MAX_CHARS, USER_MESSAGE_OFFLOAD_MARKER, shouldOffloadUserMessage, shouldOffloadHistoricalUserMessage, createUserMessagePreview, compactHistoricalPersistedUserMessageReferences;
|
|
260624
260626
|
var init_user_message_offload = __esmMin((() => {
|
|
260625
260627
|
const policy = createRequire(import.meta.url)("./bin/user-message-offload-policy.cjs");
|
|
260626
260628
|
USER_MESSAGE_MAX_CHARS = policy.USER_MESSAGE_MAX_CHARS;
|
|
@@ -260628,6 +260630,7 @@ var init_user_message_offload = __esmMin((() => {
|
|
|
260628
260630
|
shouldOffloadUserMessage = policy.shouldOffloadUserMessage;
|
|
260629
260631
|
shouldOffloadHistoricalUserMessage = policy.shouldOffloadHistoricalUserMessage;
|
|
260630
260632
|
createUserMessagePreview = policy.createUserMessagePreview;
|
|
260633
|
+
compactHistoricalPersistedUserMessageReferences = policy.compactHistoricalPersistedUserMessageReferences;
|
|
260631
260634
|
}));
|
|
260632
260635
|
var UserMessageOffload = class {
|
|
260633
260636
|
agent;
|