blun-king-cli 9.1.399 → 9.1.400

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
@@ -407,6 +407,20 @@ Profilspeicher erhalten. Damit kann eine gemessene Projektregel später wieder
407
407
  aufgerufen werden, ohne als vermeintlich allgemeine Regel in fachfremde Projekte
408
408
  zu gelangen.
409
409
 
410
+ Reaktionsfähige Wiederaufnahme großer Sitzungen
411
+ -----------------------------------------------
412
+
413
+ Ab BLUN King 9.1.400 spielt die TUI gespeicherte Sitzungsverläufe weiterhin
414
+ vollständig ab, gibt bei großen Wiederaufnahmen aber nach jeweils 30 Datensätzen
415
+ kurz an die Node-Ereignisschleife ab. Dadurch können Anzeige, Eingabe und
416
+ Zustandsleiste während des Wiederaufbaus reagieren, statt bis zum letzten
417
+ Verlaufseintrag zu warten.
418
+
419
+ Es werden keine Datensätze gekürzt, übersprungen oder aus dem gespeicherten
420
+ Verlauf entfernt. Nach dem letzten Datensatz erfolgt keine unnötige zusätzliche
421
+ Unterbrechung; kleine Sitzungen behalten damit praktisch ihr bisheriges
422
+ Startverhalten.
423
+
410
424
  Keine doppelte Telegram-Antwort ohne neue Nachricht
411
425
  ---------------------------------------------------
412
426
 
package/README.md CHANGED
@@ -415,6 +415,19 @@ Profilspeicher erhalten. Damit kann eine gemessene Projektregel später wieder
415
415
  aufgerufen werden, ohne als vermeintlich allgemeine Regel in fachfremde Projekte
416
416
  zu gelangen.
417
417
 
418
+ ## Reaktionsfähige Wiederaufnahme großer Sitzungen
419
+
420
+ Ab BLUN King 9.1.400 spielt die TUI gespeicherte Sitzungsverläufe weiterhin
421
+ vollständig ab, gibt bei großen Wiederaufnahmen aber nach jeweils 30 Datensätzen
422
+ kurz an die Node-Ereignisschleife ab. Dadurch können Anzeige, Eingabe und
423
+ Zustandsleiste während des Wiederaufbaus reagieren, statt bis zum letzten
424
+ Verlaufseintrag zu warten.
425
+
426
+ Es werden keine Datensätze gekürzt, übersprungen oder aus dem gespeicherten
427
+ Verlauf entfernt. Nach dem letzten Datensatz erfolgt keine unnötige zusätzliche
428
+ Unterbrechung; kleine Sitzungen behalten damit praktisch ihr bisheriges
429
+ Startverhalten.
430
+
418
431
  ## Keine doppelte Telegram-Antwort ohne neue Nachricht
419
432
 
420
433
  Ab BLUN King 9.1.398 prüft jeder Text-Ausgangspfad vor dem Senden die jüngste
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ const SESSION_REPLAY_BATCH_RECORDS = 30;
4
+
5
+ function shouldYieldSessionReplay(renderedRecords, totalRecords) {
6
+ if (!Number.isSafeInteger(renderedRecords) || renderedRecords < 1) return false;
7
+ if (!Number.isSafeInteger(totalRecords) || totalRecords < 1) return false;
8
+ return renderedRecords < totalRecords
9
+ && renderedRecords % SESSION_REPLAY_BATCH_RECORDS === 0;
10
+ }
11
+
12
+ function yieldSessionReplayControl(schedule = setImmediate) {
13
+ return new Promise((resolve) => schedule(resolve));
14
+ }
15
+
16
+ module.exports = {
17
+ SESSION_REPLAY_BATCH_RECORDS,
18
+ shouldYieldSessionReplay,
19
+ yieldSessionReplayControl,
20
+ };
package/blun.mjs CHANGED
@@ -509231,6 +509231,10 @@ function isRecord(value) {
509231
509231
  }
509232
509232
  //#endregion
509233
509233
  //#region src/tui/controllers/session-replay.ts
509234
+ const {
509235
+ shouldYieldSessionReplay,
509236
+ yieldSessionReplayControl
509237
+ } = createRequire(import.meta.url)("./bin/session-replay-policy.cjs");
509234
509238
  function extractBashTag(text, tag) {
509235
509239
  const match = new RegExp(`<${tag}>([\\s\\S]*?)</${tag}>`).exec(text);
509236
509240
  return match?.[1] === void 0 ? void 0 : unescapeBashXml(match[1]);
@@ -509252,7 +509256,7 @@ var SessionReplayRenderer = class {
509252
509256
  return false;
509253
509257
  }
509254
509258
  this.hydrateSnapshot(main);
509255
- this.renderRecords(main);
509259
+ await this.renderRecords(main);
509256
509260
  this.applyTerminalBackgroundAgentStatuses(main);
509257
509261
  this.host.mergeAllTurnSteps();
509258
509262
  return true;
@@ -509318,9 +509322,12 @@ var SessionReplayRenderer = class {
509318
509322
  state.footer.setBackgroundCounts(countActiveBackgroundTasks(sessionEventHandler.backgroundTasks));
509319
509323
  state.ui.requestRender();
509320
509324
  }
509321
- renderRecords(agent) {
509325
+ async renderRecords(agent) {
509322
509326
  const context = createReplayRenderContext();
509323
- for (const record of agent.replay) this.renderRecord(context, record);
509327
+ for (const [recordIndex, record] of agent.replay.entries()) {
509328
+ this.renderRecord(context, record);
509329
+ if (shouldYieldSessionReplay(recordIndex + 1, agent.replay.length)) await yieldSessionReplayControl();
509330
+ }
509324
509331
  this.flushAssistant(context);
509325
509332
  this.cleanupRuntime(context);
509326
509333
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blun-king-cli",
3
- "version": "9.1.399",
3
+ "version": "9.1.400",
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": {