blun-king-cli 9.1.290 → 9.1.292
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/bin/abort-listener-policy.cjs +14 -0
- package/bin/launcher-runtime.js +26 -10
- package/blun.mjs +5 -4
- package/package.json +3 -2
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
async function waitForAbortableCompletion(signal, work, onAbort) {
|
|
4
|
+
const listenerRegistered = !signal.aborted;
|
|
5
|
+
if (listenerRegistered) signal.addEventListener('abort', onAbort, { once: true });
|
|
6
|
+
else onAbort();
|
|
7
|
+
try {
|
|
8
|
+
return await work;
|
|
9
|
+
} finally {
|
|
10
|
+
if (listenerRegistered) signal.removeEventListener('abort', onAbort);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
module.exports = { waitForAbortableCompletion };
|
package/bin/launcher-runtime.js
CHANGED
|
@@ -314,6 +314,7 @@ async function superviseProtectedCore(args, env, cwd, releaseNotice, options = {
|
|
|
314
314
|
let updateStarted = false;
|
|
315
315
|
let runtimeReady = false;
|
|
316
316
|
let runtimeExitIntent = false;
|
|
317
|
+
let supervisionCompleted = false;
|
|
317
318
|
let runningUpdatePollTimer;
|
|
318
319
|
let runningUpdateMode = readRunningUpdateMode(env.BLUN_HOME);
|
|
319
320
|
const automaticMode = () => runningUpdateMode === RUNNING_UPDATE_MODES.RESUME
|
|
@@ -331,7 +332,7 @@ async function superviseProtectedCore(args, env, cwd, releaseNotice, options = {
|
|
|
331
332
|
};
|
|
332
333
|
const scheduleNextPreparation = (child) => {
|
|
333
334
|
clearRunningUpdatePoll();
|
|
334
|
-
if (
|
|
335
|
+
if (supervisionCompleted || pendingHandoff !== undefined || updateStarted) return;
|
|
335
336
|
runningUpdatePollTimer = (options.scheduleRunningUpdateRecheck || scheduleRunningUpdateRecheck)(() => {
|
|
336
337
|
runningUpdatePollTimer = undefined;
|
|
337
338
|
refreshRunningUpdateMode();
|
|
@@ -340,7 +341,8 @@ async function superviseProtectedCore(args, env, cwd, releaseNotice, options = {
|
|
|
340
341
|
});
|
|
341
342
|
};
|
|
342
343
|
const startPreparation = (child) => {
|
|
343
|
-
if (
|
|
344
|
+
if (supervisionCompleted || pendingHandoff !== undefined || updateStarted
|
|
345
|
+
|| options.runningUpdate === false || !automaticMode()) return;
|
|
344
346
|
updateStarted = true;
|
|
345
347
|
const sharedHome = env.BLUN_SHARED_HOME;
|
|
346
348
|
if (typeof sharedHome !== 'string' || sharedHome.length === 0) {
|
|
@@ -358,14 +360,27 @@ async function superviseProtectedCore(args, env, cwd, releaseNotice, options = {
|
|
|
358
360
|
scheduleNextPreparation(child);
|
|
359
361
|
return;
|
|
360
362
|
}
|
|
363
|
+
const previousTarget = preparedTarget;
|
|
364
|
+
if (previousTarget !== undefined
|
|
365
|
+
&& compareSemver(target.version, previousTarget.version) !== 1) {
|
|
366
|
+
updateStarted = false;
|
|
367
|
+
scheduleNextPreparation(child);
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
361
370
|
preparedTarget = target;
|
|
362
371
|
(options.stageRuntime || stageRuntime)(sharedHome, target, { mode: runningUpdateMode });
|
|
363
|
-
|
|
372
|
+
const runningVersion = readPackageVersionAt(packageRoot);
|
|
373
|
+
(options.recordRunningUpdateEvent || recordRunningUpdateEvent)(sharedHome, previousTarget === undefined ? {
|
|
364
374
|
event: 'prepared-for-next-start',
|
|
365
|
-
fromVersion:
|
|
375
|
+
fromVersion: runningVersion,
|
|
376
|
+
toVersion: target.version,
|
|
377
|
+
} : {
|
|
378
|
+
event: 'prepared-target-refreshed',
|
|
379
|
+
fromVersion: previousTarget.version,
|
|
366
380
|
toVersion: target.version,
|
|
381
|
+
runningVersion,
|
|
367
382
|
}, { now: options.nowImpl });
|
|
368
|
-
if (child?.connected === true) {
|
|
383
|
+
if (previousTarget === undefined && child?.connected === true) {
|
|
369
384
|
try {
|
|
370
385
|
child.send({
|
|
371
386
|
type: RUNNING_UPDATE_PREPARED_MESSAGE,
|
|
@@ -377,7 +392,8 @@ async function superviseProtectedCore(args, env, cwd, releaseNotice, options = {
|
|
|
377
392
|
Promise.resolve((options.pruneRunningUpdateReleases || pruneRunningUpdateReleases)(sharedHome, {
|
|
378
393
|
activePackageRoot: packageRoot,
|
|
379
394
|
})).catch((error) => options.onRunningUpdateError?.(error));
|
|
380
|
-
|
|
395
|
+
updateStarted = false;
|
|
396
|
+
scheduleNextPreparation(child);
|
|
381
397
|
}).catch((error) => {
|
|
382
398
|
updateStarted = false;
|
|
383
399
|
options.onRunningUpdateError?.(error);
|
|
@@ -401,6 +417,7 @@ async function superviseProtectedCore(args, env, cwd, releaseNotice, options = {
|
|
|
401
417
|
sessionId: message.sessionId,
|
|
402
418
|
target: preparedTarget,
|
|
403
419
|
});
|
|
420
|
+
clearRunningUpdatePoll();
|
|
404
421
|
if (child?.connected === true) {
|
|
405
422
|
try {
|
|
406
423
|
child.send({
|
|
@@ -411,6 +428,7 @@ async function superviseProtectedCore(args, env, cwd, releaseNotice, options = {
|
|
|
411
428
|
});
|
|
412
429
|
} catch {
|
|
413
430
|
pendingHandoff = undefined;
|
|
431
|
+
scheduleNextPreparation(child);
|
|
414
432
|
}
|
|
415
433
|
}
|
|
416
434
|
}
|
|
@@ -424,10 +442,7 @@ async function superviseProtectedCore(args, env, cwd, releaseNotice, options = {
|
|
|
424
442
|
runningUpdateMode = normalizeRunningUpdateMode(message.mode);
|
|
425
443
|
clearRunningUpdatePoll();
|
|
426
444
|
if (automaticMode()) {
|
|
427
|
-
if (
|
|
428
|
-
updateStarted = false;
|
|
429
|
-
startPreparation(child);
|
|
430
|
-
}
|
|
445
|
+
if (runtimeReady && !updateStarted) startPreparation(child);
|
|
431
446
|
} else if (runtimeReady) scheduleNextPreparation(child);
|
|
432
447
|
}
|
|
433
448
|
};
|
|
@@ -468,6 +483,7 @@ async function superviseProtectedCore(args, env, cwd, releaseNotice, options = {
|
|
|
468
483
|
}
|
|
469
484
|
await releaseNotice();
|
|
470
485
|
const result = await core.completed;
|
|
486
|
+
supervisionCompleted = true;
|
|
471
487
|
clearRunningUpdatePoll();
|
|
472
488
|
if (existingMessageHandler) core.child.off('message', existingMessageHandler);
|
|
473
489
|
if (result.code === RUNNING_UPDATE_HANDOFF_EXIT_CODE && pendingHandoff !== undefined) {
|
package/blun.mjs
CHANGED
|
@@ -75292,9 +75292,10 @@ function extractCompactionSummary(response) {
|
|
|
75292
75292
|
if (summary.trim().length === 0) throw new APIEmptyResponseError("The compaction response did not contain a non-empty summary.");
|
|
75293
75293
|
return summary;
|
|
75294
75294
|
}
|
|
75295
|
-
var archiveCompactionHistory, buildCompactionArchiveNotice, capCompactionCompletionTokens, capCompactionStageTarget, proactiveCompactionEligibility, COMPACTION_THINKING_EFFORT, COMPACTION_SYSTEM_PROMPT, COMPACTION_SUMMARY_RESERVE_RATIO, MAX_HIERARCHICAL_COMPACTION_PASSES, HIERARCHICAL_COMPACTION_PREFIX, CompactionTruncatedError, CompactionStallError, COMPACTION_STALL_MEASUREMENT_MULTIPLIER, REBUILT_AFTER_COMPACTION_INJECTION_VARIANTS, FullCompaction, MAX_COMPACTION_OVERFLOW_SHRINK_ATTEMPTS, COMPACTION_OVERFLOW_SHRINK_RATIOS;
|
|
75295
|
+
var archiveCompactionHistory, buildCompactionArchiveNotice, capCompactionCompletionTokens, capCompactionStageTarget, proactiveCompactionEligibility, waitForAbortableCompletion, COMPACTION_THINKING_EFFORT, COMPACTION_SYSTEM_PROMPT, COMPACTION_SUMMARY_RESERVE_RATIO, MAX_HIERARCHICAL_COMPACTION_PASSES, HIERARCHICAL_COMPACTION_PREFIX, CompactionTruncatedError, CompactionStallError, COMPACTION_STALL_MEASUREMENT_MULTIPLIER, REBUILT_AFTER_COMPACTION_INJECTION_VARIANTS, FullCompaction, MAX_COMPACTION_OVERFLOW_SHRINK_ATTEMPTS, COMPACTION_OVERFLOW_SHRINK_RATIOS;
|
|
75296
75296
|
var init_full = __esmMin((() => {
|
|
75297
75297
|
({ archiveCompactionHistory, buildCompactionArchiveNotice } = createRequire(import.meta.url)("./bin/compaction-history-archive.cjs"));
|
|
75298
|
+
({ waitForAbortableCompletion } = createRequire(import.meta.url)("./bin/abort-listener-policy.cjs"));
|
|
75298
75299
|
({ capCompactionCompletionTokens, capCompactionStageTarget } = createRequire(import.meta.url)("./bin/compaction-stage-policy.cjs"));
|
|
75299
75300
|
({ proactiveCompactionEligibility } = createRequire(import.meta.url)("./bin/proactive-compaction-policy.cjs"));
|
|
75300
75301
|
init_errors$8();
|
|
@@ -75556,14 +75557,14 @@ var init_full = __esmMin((() => {
|
|
|
75556
75557
|
const active = this.compacting;
|
|
75557
75558
|
if (active) {
|
|
75558
75559
|
active.blockedByTurn = true;
|
|
75559
|
-
|
|
75560
|
+
const onAbort = () => {
|
|
75560
75561
|
if (this.compacting === active) this.cancel();
|
|
75561
|
-
}
|
|
75562
|
+
};
|
|
75562
75563
|
this.agent.emitEvent({
|
|
75563
75564
|
type: "compaction.blocked",
|
|
75564
75565
|
turnId: this.agent.turn.currentId
|
|
75565
75566
|
});
|
|
75566
|
-
await active.promise;
|
|
75567
|
+
await waitForAbortableCompletion(signal, active.promise, onAbort);
|
|
75567
75568
|
}
|
|
75568
75569
|
}
|
|
75569
75570
|
async compactionWorker(signal, data) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "blun-king-cli",
|
|
3
|
-
"version": "9.1.
|
|
3
|
+
"version": "9.1.292",
|
|
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": {
|
|
@@ -56,5 +56,6 @@
|
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"blun-king-cli": "^9.1.62",
|
|
58
58
|
"node-addon-api": "^7.1.1"
|
|
59
|
-
}
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {}
|
|
60
61
|
}
|