blun-king-cli 9.1.138 → 9.1.140

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
@@ -131,6 +131,10 @@ Ab BLUN King 9.1.137 schützt die Modellprojektion nur noch die zwölf neuesten
131
131
 
132
132
  Ab BLUN King 9.1.138 enthält die Modellprojektion von jedem wiederkehrenden Cron-Auftrag nur noch den neuesten ausstehenden Weckhinweis. Einmalige Erinnerungen, unterschiedliche Aufträge sowie fehlerhafte oder nicht eindeutig zugeordnete Nachrichten bleiben unverändert. Der vollständige Sitzungs-Wire bleibt erhalten. In Fredriks aktueller Sitzung entfallen dadurch bei jeder Anfrage 12.012 Zeichen, also rund 3.003 geschätzte Token.
133
133
 
134
+ Ab BLUN King 9.1.139 begrenzt die Modellprojektion ältere, nicht adressierte Telegram-Kanalteile auf 500 Zeichen pro Nachricht. Die neueste Nutzernachricht, adressierte Kanalteile, Anhänge und der vollständige Sitzungs-Wire bleiben unverändert. In Fredriks aktueller Sitzung entfallen dadurch bei jeder Anfrage 9.389 Zeichen, also rund 2.348 geschätzte Token.
135
+
136
+ Ab BLUN King 9.1.140 begrenzt die relevanzbasierte Mistake-Erinnerung den zusätzlich eingeblendeten Regelkontext standardmäßig auf 4.000 Zeichen. Die vollständigen Mistake-Dateien und der Sitzungs-Wire bleiben unverändert; nur die Modellprojektion erhält die engere Auswahl. In Fredriks gemessenem Lauf sinkt der Hinweis dadurch von 6.037 auf höchstens 4.000 Zeichen. Das spart mindestens 2.037 Zeichen beziehungsweise rund 509 geschätzte Token pro Anfrage.
137
+
134
138
  Ab BLUN King 9.1.136 behält die Modellprojektion nur noch den neuesten dynamischen `Mistake.md`-Hinweis. Ältere, zugbezogene Auswahlen bleiben im Sitzungsrohverlauf und in Exporten erhalten, werden nach einer neueren Auswahl aber nicht mehr erneut an das Modell gesendet. Andere geänderte Hinweise bleiben unberührt. In Fredriks aktueller Sitzung lagen fünf `Mistake.md`-Auswahlen vor; das Entfernen der vier überholten Kopien spart pro Modellanfrage 24.143 Zeichen, also etwa 6.036 geschätzte Token.
135
139
 
136
140
  Ab BLUN King 9.1.131 entfernt die Modellprojektion zwei ältere Regelkopien aus dem Systemprompt, sobald gleichwertige Regeln im Conduct-Abschnitt vorhanden sind. Betroffen sind ausschließlich die doppelten Hinweise zu Ehrlichkeit und Zugangsdaten; die vollständigen Conduct-Regeln und alle übrigen Prompt-Abschnitte bleiben unverändert. In der ausgelieferten Standardvorlage sinkt der wiederholt gesendete Prompt dadurch um 1.010 Zeichen, also um etwa 253 geschätzte Token pro Modellanfrage. Fehlt eines der Conduct-Gegenstücke, bleibt die entsprechende ältere Regel unverändert erhalten.
package/README.md CHANGED
@@ -137,6 +137,10 @@ Ab BLUN King 9.1.137 schützt die Modellprojektion nur noch die zwölf neuesten
137
137
 
138
138
  Ab BLUN King 9.1.138 enthält die Modellprojektion von jedem wiederkehrenden Cron-Auftrag nur noch den neuesten ausstehenden Weckhinweis. Einmalige Erinnerungen, unterschiedliche Aufträge sowie fehlerhafte oder nicht eindeutig zugeordnete Nachrichten bleiben unverändert. Der vollständige Sitzungs-Wire bleibt erhalten. In Fredriks aktueller Sitzung entfallen dadurch bei jeder Anfrage 12.012 Zeichen, also rund 3.003 geschätzte Token.
139
139
 
140
+ Ab BLUN King 9.1.139 begrenzt die Modellprojektion ältere, nicht adressierte Telegram-Kanalteile auf 500 Zeichen pro Nachricht. Die neueste Nutzernachricht, adressierte Kanalteile, Anhänge und der vollständige Sitzungs-Wire bleiben unverändert. In Fredriks aktueller Sitzung entfallen dadurch bei jeder Anfrage 9.389 Zeichen, also rund 2.348 geschätzte Token.
141
+
142
+ Ab BLUN King 9.1.140 begrenzt die relevanzbasierte Mistake-Erinnerung den zusätzlich eingeblendeten Regelkontext standardmäßig auf 4.000 Zeichen. Die vollständigen Mistake-Dateien und der Sitzungs-Wire bleiben unverändert; nur die Modellprojektion erhält die engere Auswahl. In Fredriks gemessenem Lauf sinkt der Hinweis dadurch von 6.037 auf höchstens 4.000 Zeichen. Das spart mindestens 2.037 Zeichen beziehungsweise rund 509 geschätzte Token pro Anfrage.
143
+
140
144
  Ab BLUN King 9.1.136 behält die Modellprojektion nur noch den neuesten dynamischen `Mistake.md`-Hinweis. Ältere, zugbezogene Auswahlen bleiben im Sitzungsrohverlauf und in Exporten erhalten, werden nach einer neueren Auswahl aber nicht mehr erneut an das Modell gesendet. Andere geänderte Hinweise bleiben unberührt. In Fredriks aktueller Sitzung lagen fünf `Mistake.md`-Auswahlen vor; das Entfernen der vier überholten Kopien spart pro Modellanfrage 24.143 Zeichen, also etwa 6.036 geschätzte Token.
141
145
 
142
146
  Ab BLUN King 9.1.131 entfernt die Modellprojektion zwei ältere Regelkopien aus dem Systemprompt, sobald gleichwertige Regeln im Conduct-Abschnitt vorhanden sind. Betroffen sind ausschließlich die doppelten Hinweise zu Ehrlichkeit und Zugangsdaten; die vollständigen Conduct-Regeln und alle übrigen Prompt-Abschnitte bleiben unverändert. In der ausgelieferten Standardvorlage sinkt der wiederholt gesendete Prompt dadurch um 1.010 Zeichen, also um etwa 253 geschätzte Token pro Modellanfrage. Fehlt eines der Conduct-Gegenstücke, bleibt die entsprechende ältere Regel unverändert erhalten.
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const DEFAULT_MAX_CHARS = 6_000;
3
+ const DEFAULT_MAX_CHARS = 4_000;
4
4
  const DEFAULT_MAX_SECTIONS = 5;
5
5
  const RECENT_USER_MESSAGES = 4;
6
6
  const STOP_WORDS = new Set([
@@ -1,6 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  const MAX_UNADDRESSED_TELEGRAM_CONTEXT_CHARS = 2000;
4
+ const HISTORICAL_UNADDRESSED_TELEGRAM_CONTEXT_CHARS = 500;
5
+ const HISTORICAL_UNADDRESSED_CHANNEL_PATTERN = /(<channel\s+[^>]*\baddressed="false"[^>]*>[\s\S]*?<\/channel>)(?:\r?\n\[NUR MITLESEN[^\]]*\])?/gu;
4
6
 
5
7
  function trimDanglingHighSurrogate(value) {
6
8
  if (value.length === 0) return value;
@@ -33,7 +35,55 @@ function projectUnaddressedTelegramContext(
33
35
  return `${head}${marker}${tail}`;
34
36
  }
35
37
 
38
+ function projectHistoricalUnaddressedTelegramText(text) {
39
+ if (typeof text !== 'string' || !text.includes('addressed="false"')) return text;
40
+ return text.replace(
41
+ HISTORICAL_UNADDRESSED_CHANNEL_PATTERN,
42
+ (_matched, channel) => projectUnaddressedTelegramContext(
43
+ channel,
44
+ HISTORICAL_UNADDRESSED_TELEGRAM_CONTEXT_CHARS,
45
+ ),
46
+ );
47
+ }
48
+
49
+ function projectHistoricalUnaddressedTelegramMessages(history) {
50
+ if (!Array.isArray(history) || history.length === 0) return history;
51
+ let latestUserIndex = -1;
52
+ for (let index = history.length - 1; index >= 0; index -= 1) {
53
+ if (history[index]?.role === 'user' && history[index]?.origin?.kind === 'user') {
54
+ latestUserIndex = index;
55
+ break;
56
+ }
57
+ }
58
+ if (latestUserIndex <= 0) return history;
59
+
60
+ let changed = false;
61
+ const projected = history.map((message, index) => {
62
+ if (
63
+ index >= latestUserIndex
64
+ || message?.role !== 'user'
65
+ || message?.origin?.kind !== 'user'
66
+ || !Array.isArray(message.content)
67
+ ) return message;
68
+
69
+ let messageChanged = false;
70
+ const content = message.content.map((part) => {
71
+ if (part?.type !== 'text' || typeof part.text !== 'string') return part;
72
+ const text = projectHistoricalUnaddressedTelegramText(part.text);
73
+ if (text === part.text) return part;
74
+ messageChanged = true;
75
+ return { ...part, text };
76
+ });
77
+ if (!messageChanged) return message;
78
+ changed = true;
79
+ return { ...message, content };
80
+ });
81
+ return changed ? projected : history;
82
+ }
83
+
36
84
  module.exports = {
85
+ HISTORICAL_UNADDRESSED_TELEGRAM_CONTEXT_CHARS,
37
86
  MAX_UNADDRESSED_TELEGRAM_CONTEXT_CHARS,
87
+ projectHistoricalUnaddressedTelegramMessages,
38
88
  projectUnaddressedTelegramContext,
39
89
  };
package/blun.mjs CHANGED
@@ -75986,10 +75986,11 @@ var init_full = __esmMin((() => {
75986
75986
  }));
75987
75987
  //#endregion
75988
75988
  //#region ../../packages/agent-core/src/agent/compaction/micro.ts
75989
- var selectMicroCompactionCutoff, isPersistedToolResultReference, dedupeRecurringCronWakeups, dedupeRepeatedInjections, DEFAULT_CONFIG, MicroCompaction;
75989
+ var selectMicroCompactionCutoff, isPersistedToolResultReference, projectHistoricalUnaddressedTelegramMessages, dedupeRecurringCronWakeups, dedupeRepeatedInjections, DEFAULT_CONFIG, MicroCompaction;
75990
75990
  var init_micro = __esmMin((() => {
75991
75991
  ({ selectMicroCompactionCutoff } = createRequire(import.meta.url)("./bin/micro-compaction-policy.cjs"));
75992
75992
  ({ isPersistedToolResultReference } = createRequire(import.meta.url)("./bin/tool-result-offload-policy.cjs"));
75993
+ ({ projectHistoricalUnaddressedTelegramMessages } = createRequire(import.meta.url)("./bin/telegram-context-projection-policy.cjs"));
75993
75994
  ({ dedupeRecurringCronWakeups, dedupeRepeatedInjections } = createRequire(import.meta.url)("./bin/repeated-injection-projection.cjs"));
75994
75995
  init_tokens();
75995
75996
  DEFAULT_CONFIG = {
@@ -78962,7 +78963,8 @@ var init_context$2 = __esmMin((() => {
78962
78963
  }
78963
78964
  project(messages, options) {
78964
78965
  const anomalies = [];
78965
- const result = project(this.agent.assistantMessageOffload.compact(this.agent.userMessageOffload.compact(this.agent.microCompaction.compact(this.agent.toolResultBatchOffload.compact(dedupeRecurringCronWakeups(dedupeRepeatedInjections(compactBaselineSkillInjections(messages))))))), {
78966
+ const historicalTelegramProjected = projectHistoricalUnaddressedTelegramMessages(messages);
78967
+ const result = project(this.agent.assistantMessageOffload.compact(this.agent.userMessageOffload.compact(this.agent.microCompaction.compact(this.agent.toolResultBatchOffload.compact(dedupeRecurringCronWakeups(dedupeRepeatedInjections(compactBaselineSkillInjections(historicalTelegramProjected))))))), {
78966
78968
  ...options,
78967
78969
  onAnomaly: (anomaly) => {
78968
78970
  anomalies.push(anomaly);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blun-king-cli",
3
- "version": "9.1.138",
3
+ "version": "9.1.140",
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": {