@fnndsc/chell 5.6.2 → 5.7.0
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/dist/core/daemonConsole.d.ts +88 -0
- package/dist/core/daemonConsole.js +130 -0
- package/dist/core/daemonConsole.js.map +1 -0
- package/dist/core/promptGuard.d.ts +44 -0
- package/dist/core/promptGuard.js +71 -0
- package/dist/core/promptGuard.js.map +1 -0
- package/dist/core/repl.d.ts +6 -0
- package/dist/core/repl.js +25 -2
- package/dist/core/repl.js.map +1 -1
- package/dist/core/startupWarmup.d.ts +11 -4
- package/dist/core/startupWarmup.js +99 -77
- package/dist/core/startupWarmup.js.map +1 -1
- package/dist/lib/bootsequence.d.ts +26 -1
- package/dist/lib/bootsequence.js +84 -5
- package/dist/lib/bootsequence.js.map +1 -1
- package/dist/lib/logo.d.ts +4 -5
- package/dist/lib/logo.js +21 -57
- package/dist/lib/logo.js.map +1 -1
- package/dist/lib/terminalRows.d.ts +88 -0
- package/dist/lib/terminalRows.js +151 -0
- package/dist/lib/terminalRows.js.map +1 -0
- package/dist/remote/client.js +20 -17
- package/dist/remote/client.js.map +1 -1
- package/package.json +6 -6
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
* @module
|
|
10
10
|
*/
|
|
11
11
|
import { error_stripDebugPrefix, prefetch_path, prefetch_withSpinner, repl_question, session, vfs, warmupFailure_clear, warmupFailure_note, } from '@fnndsc/brasa';
|
|
12
|
-
import { daemon_launch,
|
|
13
|
-
import {
|
|
12
|
+
import { daemon_launch, identity_forSession, hostControl_fromInputs } from '@fnndsc/calypso';
|
|
13
|
+
import { daemonConsole_run } from './daemonConsole.js';
|
|
14
14
|
import { logo_animateHalt } from '../lib/logo.js';
|
|
15
|
-
import { sink_set, StdoutSink } from '@fnndsc/brasa';
|
|
15
|
+
import { sink_set, StdoutSink, count_noun } from '@fnndsc/brasa';
|
|
16
16
|
import { TerminalProgressRenderer } from './progressRenderer.js';
|
|
17
17
|
import { chrisContext, errorStack, procCache_get, procCheckpoint_restore, procCheckpoint_watch, listCache_get, listCheckpoint_restore, listCheckpoint_watch, queryIndexCheckpoint_restore, queryIndexCheckpoint_save, queryIndexCheckpoint_watch, queryIndex_sweep, } from '@fnndsc/cumin';
|
|
18
18
|
import { procCache_refresh, procRoster_bootSync, procRoster_sync, procTopology_status, procTopology_warmup, vfsDispatcher, } from '@fnndsc/salsa';
|
|
@@ -47,13 +47,28 @@ async function startupRetry_wait(attempt) {
|
|
|
47
47
|
* @returns The first successful result, or the last failed result.
|
|
48
48
|
*/
|
|
49
49
|
async function startupPrefetch_retry(label, message, interactive, reporter, action) {
|
|
50
|
+
return startupAttempts_run(label, reporter, () => prefetch_withSpinner(label, message, interactive, action, BOOT_TAG_WIDTH));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Runs one warm-up attempt at a time under the bounded retry policy.
|
|
54
|
+
*
|
|
55
|
+
* Draws nothing itself: a blocking step wraps each attempt in the spinner
|
|
56
|
+
* (or its plain-log stand-in), and a deferred step has already printed its
|
|
57
|
+
* pending row and must not print another.
|
|
58
|
+
*
|
|
59
|
+
* @param label - Stable boot-step label.
|
|
60
|
+
* @param reporter - Where retry rows go, or null to retry silently.
|
|
61
|
+
* @param attempt - One attempt at the cache operation.
|
|
62
|
+
* @returns The first successful result, or the last failed result.
|
|
63
|
+
*/
|
|
64
|
+
async function startupAttempts_run(label, reporter, attempt) {
|
|
50
65
|
let last = { ok: false, message: 'Warm-up did not run.' };
|
|
51
|
-
for (let
|
|
52
|
-
last = await
|
|
53
|
-
if (last.ok ||
|
|
66
|
+
for (let turn = 1; turn <= STARTUP_WARMUP_ATTEMPTS; turn++) {
|
|
67
|
+
last = await attempt();
|
|
68
|
+
if (last.ok || turn === STARTUP_WARMUP_ATTEMPTS)
|
|
54
69
|
return last;
|
|
55
|
-
reporter?.log('retry', label, `Attempt ${
|
|
56
|
-
await startupRetry_wait(
|
|
70
|
+
reporter?.log('retry', label, `Attempt ${turn}/${STARTUP_WARMUP_ATTEMPTS} failed: ${last.message ?? 'unknown error'}; retrying.`);
|
|
71
|
+
await startupRetry_wait(turn);
|
|
57
72
|
}
|
|
58
73
|
return last;
|
|
59
74
|
}
|
|
@@ -90,34 +105,43 @@ async function daemonWarmupFailure_decide(failures) {
|
|
|
90
105
|
* A deferred step leaves the boot failure gate with this call, so its
|
|
91
106
|
* failure is announced afterwards rather than holding the daemon.
|
|
92
107
|
*
|
|
108
|
+
* The pending row is the only thing printed here. The attempts themselves
|
|
109
|
+
* run without the spinner helper: its plain-log stand-in printed the same
|
|
110
|
+
* label and message again, untagged, directly under the pending row.
|
|
111
|
+
*
|
|
93
112
|
* @param label - Stable boot-step label.
|
|
94
113
|
* @param message - What the row says while it runs.
|
|
95
114
|
* @param reporter - Host status logger, or null.
|
|
115
|
+
* @param settlement - Whether the readout persists to take the outcome
|
|
116
|
+
* row: the daemon face keeps its boot log, so `[ OK ]` and `[FAIL]`
|
|
117
|
+
* land there when the step settles; an interactive readout has scrolled
|
|
118
|
+
* away, and the prompt carries a failure instead.
|
|
96
119
|
* @param action - The warm-up itself.
|
|
120
|
+
* @param describe - Words for a successful outcome's row.
|
|
97
121
|
* @returns The step's label and the promise of its outcome.
|
|
98
122
|
*/
|
|
99
|
-
function warmup_defer(label, message, reporter, action) {
|
|
123
|
+
function warmup_defer(label, message, reporter, settlement, action, describe) {
|
|
100
124
|
reporter?.log('pending', label, message);
|
|
101
|
-
|
|
102
|
-
// changes nothing is not news. Only a failure is, and that is
|
|
103
|
-
// annunciated rather than printed to a readout already scrolled past.
|
|
125
|
+
const outcomes = settlement ? reporter : null;
|
|
104
126
|
// A deferred step keeps the bounded retry policy a blocking one had: a
|
|
105
|
-
// transient failure should be retried before it is announced.
|
|
106
|
-
|
|
107
|
-
// scrolled past.
|
|
108
|
-
const settled = startupPrefetch_retry(label, message, false, null, action)
|
|
127
|
+
// transient failure should be retried before it is announced.
|
|
128
|
+
const settled = startupAttempts_run(label, outcomes, action)
|
|
109
129
|
.catch((error) => ({
|
|
110
130
|
ok: false,
|
|
111
131
|
message: error instanceof Error ? error.message : String(error),
|
|
112
132
|
}))
|
|
113
133
|
.then((outcome) => {
|
|
114
|
-
//
|
|
115
|
-
//
|
|
116
|
-
|
|
117
|
-
if (outcome.ok)
|
|
134
|
+
// A failure is held until a later attempt succeeds, so a surface
|
|
135
|
+
// whose readout has scrolled away still announces it at the prompt.
|
|
136
|
+
if (outcome.ok) {
|
|
118
137
|
warmupFailure_clear(label);
|
|
119
|
-
|
|
120
|
-
|
|
138
|
+
outcomes?.log('ok', label, describe(outcome));
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
const failure = outcome.message ?? `${label} warm-up failed`;
|
|
142
|
+
warmupFailure_note(label, failure);
|
|
143
|
+
outcomes?.log('fail', label, failure);
|
|
144
|
+
}
|
|
121
145
|
return outcome;
|
|
122
146
|
});
|
|
123
147
|
return { label, settled };
|
|
@@ -143,8 +167,8 @@ function restoreAge_describe() {
|
|
|
143
167
|
return `, oldest ${minutes} min`;
|
|
144
168
|
const hours = Math.floor(minutes / 60);
|
|
145
169
|
if (hours < 48)
|
|
146
|
-
return `, oldest ${hours
|
|
147
|
-
return `, oldest ${Math.floor(hours / 24)
|
|
170
|
+
return `, oldest ${count_noun(hours, 'hour')}`;
|
|
171
|
+
return `, oldest ${count_noun(Math.floor(hours / 24), 'day')}`;
|
|
148
172
|
}
|
|
149
173
|
/**
|
|
150
174
|
* The identity whose checkpoints this process may write, once a boot has
|
|
@@ -200,11 +224,13 @@ export async function queryCheckpoint_flush() {
|
|
|
200
224
|
* @param user - Authenticated username used to construct the feed path.
|
|
201
225
|
* @param interactive - Whether progress may use an interactive spinner.
|
|
202
226
|
* @param reporter - Host status logger, or null for silent status reporting.
|
|
203
|
-
* @param
|
|
204
|
-
*
|
|
227
|
+
* @param reportSettlement - Whether to report outcomes that arrive after
|
|
228
|
+
* boot (the topology walk, the steps warming behind the prompt); daemon
|
|
229
|
+
* hosts enable this because the face keeps the readout, while interactive
|
|
230
|
+
* hosts use prompt progress.
|
|
205
231
|
* @returns Cache counts and the labels of any failed warm-up operations.
|
|
206
232
|
*/
|
|
207
|
-
export async function startupWarmup_run(flags, user, interactive, reporter,
|
|
233
|
+
export async function startupWarmup_run(flags, user, interactive, reporter, reportSettlement = false) {
|
|
208
234
|
const result = { failures: [], deferred: [] };
|
|
209
235
|
/** The identity whose checkpoints this boot restored, once known. */
|
|
210
236
|
let checkpointIdentity = null;
|
|
@@ -232,7 +258,7 @@ export async function startupWarmup_run(flags, user, interactive, reporter, repo
|
|
|
232
258
|
const listings = await listCheckpoint_restore(identity);
|
|
233
259
|
listCheckpoint_watch(identity);
|
|
234
260
|
reporter?.log(listings.restored ? 'ok' : 'skip', 'Folders', listings.restored
|
|
235
|
-
? `Restored ${listings.count
|
|
261
|
+
? `Restored ${count_noun(listings.count, 'folder listing')}${restoreAge_describe()}, stale until revisited`
|
|
236
262
|
: (listings.reason ?? 'No folder-listing checkpoint'));
|
|
237
263
|
// What has already been asked of a PACS. Expensive to build — every
|
|
238
264
|
// row of the collection drags its compressed result — and cheap to
|
|
@@ -240,7 +266,7 @@ export async function startupWarmup_run(flags, user, interactive, reporter, repo
|
|
|
240
266
|
const queries = await queryIndexCheckpoint_restore(identity);
|
|
241
267
|
queryIndexCheckpoint_watch(identity);
|
|
242
268
|
reporter?.log(queries.restored ? 'ok' : 'skip', 'Queries', queries.restored
|
|
243
|
-
? `Restored ${queries.count
|
|
269
|
+
? `Restored ${count_noun(queries.count, 'PACS query', 'PACS queries')} already asked`
|
|
244
270
|
: (queries.reason ?? 'No PACS query index'));
|
|
245
271
|
}
|
|
246
272
|
}
|
|
@@ -260,8 +286,8 @@ export async function startupWarmup_run(flags, user, interactive, reporter, repo
|
|
|
260
286
|
if (pluginsResult.ok) {
|
|
261
287
|
result.plugins = pluginsResult.count;
|
|
262
288
|
result.pipelines = pluginsResult.pipelineCount;
|
|
263
|
-
reporter?.log('ok', 'Plugins', `Cached ${pluginsResult.count ?? 0
|
|
264
|
-
reporter?.log('ok', 'Pipelines', `Cached ${pluginsResult.pipelineCount ?? 0
|
|
289
|
+
reporter?.log('ok', 'Plugins', `Cached ${count_noun(pluginsResult.count ?? 0, 'plugin')}`);
|
|
290
|
+
reporter?.log('ok', 'Pipelines', `Cached ${count_noun(pluginsResult.pipelineCount ?? 0, 'pipeline')}`);
|
|
265
291
|
}
|
|
266
292
|
else {
|
|
267
293
|
result.failures.push('Plugins');
|
|
@@ -277,7 +303,7 @@ export async function startupWarmup_run(flags, user, interactive, reporter, repo
|
|
|
277
303
|
reporter?.log('skip', 'Pipelines', 'Offline mode');
|
|
278
304
|
}
|
|
279
305
|
if (!session.offline) {
|
|
280
|
-
result.deferred.push(warmup_defer('Groups', 'Resolving /etc/group behind the prompt', reporter, async () => {
|
|
306
|
+
result.deferred.push(warmup_defer('Groups', 'Resolving /etc/group behind the prompt', reporter, reportSettlement, async () => {
|
|
281
307
|
const projection = await vfsDispatcher.read('/etc/group');
|
|
282
308
|
if (projection.ok) {
|
|
283
309
|
const count = projection.value.split('\n').filter(Boolean).length;
|
|
@@ -285,7 +311,7 @@ export async function startupWarmup_run(flags, user, interactive, reporter, repo
|
|
|
285
311
|
}
|
|
286
312
|
const error = errorStack.stack_pop();
|
|
287
313
|
return { ok: false, message: error?.message ?? 'Failed to resolve /etc/group' };
|
|
288
|
-
}));
|
|
314
|
+
}, (outcome) => `Cached ${count_noun(outcome.count ?? 0, 'group')}`));
|
|
289
315
|
}
|
|
290
316
|
else {
|
|
291
317
|
reporter?.log('skip', 'Groups', 'Offline mode');
|
|
@@ -293,22 +319,22 @@ export async function startupWarmup_run(flags, user, interactive, reporter, repo
|
|
|
293
319
|
if (!session.offline && flags.feeds) {
|
|
294
320
|
const feedPath = user ? `/home/${user}/feeds` : undefined;
|
|
295
321
|
if (feedPath) {
|
|
296
|
-
result.deferred.push(warmup_defer('Feeds', `Warming ${feedPath} behind the prompt`, reporter, () => prefetch_path(feedPath)));
|
|
322
|
+
result.deferred.push(warmup_defer('Feeds', `Warming ${feedPath} behind the prompt`, reporter, reportSettlement, () => prefetch_path(feedPath), (outcome) => `Cached ${count_noun(outcome.count ?? 0, 'item')} from ${feedPath}`));
|
|
297
323
|
}
|
|
298
324
|
else {
|
|
299
325
|
reporter?.log('skip', 'Feeds', 'No user context');
|
|
300
326
|
}
|
|
301
327
|
if (flags.publicFeeds) {
|
|
302
|
-
result.deferred.push(warmup_defer('Public', 'Warming /PUBLIC behind the prompt', reporter, () => prefetch_path('/PUBLIC')));
|
|
328
|
+
result.deferred.push(warmup_defer('Public', 'Warming /PUBLIC behind the prompt', reporter, reportSettlement, () => prefetch_path('/PUBLIC'), (outcome) => `Cached ${count_noun(outcome.count ?? 0, 'item')} from /PUBLIC`));
|
|
303
329
|
}
|
|
304
330
|
// `/SHARED` is where another identity's work becomes visible, and it
|
|
305
331
|
// had no step at all: nothing to fail, so a CUBE that stopped serving
|
|
306
332
|
// shared paths stayed silent until somebody went looking.
|
|
307
|
-
result.deferred.push(warmup_defer('Shared', 'Warming /SHARED behind the prompt', reporter, () => prefetch_path('/SHARED')));
|
|
333
|
+
result.deferred.push(warmup_defer('Shared', 'Warming /SHARED behind the prompt', reporter, reportSettlement, () => prefetch_path('/SHARED'), (outcome) => `Cached ${count_noun(outcome.count ?? 0, 'item')} from /SHARED`));
|
|
308
334
|
// The PACS query back catalogue. It resumes from the index's floor, so
|
|
309
335
|
// a restored index walks only what arrived since — and a cold one pays
|
|
310
336
|
// the whole walk once, behind the prompt, never in front of a query.
|
|
311
|
-
result.deferred.push(warmup_defer('Queries', 'Indexing prior PACS queries behind the prompt', reporter, async () => {
|
|
337
|
+
result.deferred.push(warmup_defer('Queries', 'Indexing prior PACS queries behind the prompt', reporter, reportSettlement, async () => {
|
|
312
338
|
// Every identity's queries, not just this one's: the index is also
|
|
313
339
|
// the log that `/net/pacs/queries` lists, and that log has always
|
|
314
340
|
// shown whatever CUBE holds. A replay stays scoped to the asking
|
|
@@ -321,7 +347,7 @@ export async function startupWarmup_run(flags, user, interactive, reporter, repo
|
|
|
321
347
|
if (swept.value.bounded) {
|
|
322
348
|
return {
|
|
323
349
|
ok: false,
|
|
324
|
-
message:
|
|
350
|
+
message: `${count_noun(swept.value.total, 'PACS query', 'PACS queries')} indexed, stopped at the page bound — the index is incomplete`,
|
|
325
351
|
};
|
|
326
352
|
}
|
|
327
353
|
// Made durable here rather than left to the debounced writer: that
|
|
@@ -335,9 +361,16 @@ export async function startupWarmup_run(flags, user, interactive, reporter, repo
|
|
|
335
361
|
}
|
|
336
362
|
return {
|
|
337
363
|
ok: true,
|
|
338
|
-
count: swept.value.
|
|
339
|
-
|
|
364
|
+
count: swept.value.total,
|
|
365
|
+
pipelineCount: swept.value.indexed,
|
|
340
366
|
};
|
|
367
|
+
},
|
|
368
|
+
// The amount of queries the index holds, and how many this top-up added
|
|
369
|
+
// — a resume that found nothing new says just the total, not "1".
|
|
370
|
+
(outcome) => {
|
|
371
|
+
const total = outcome.count ?? 0;
|
|
372
|
+
const fresh = outcome.pipelineCount ?? 0;
|
|
373
|
+
return `${count_noun(total, 'PACS query', 'PACS queries')} indexed${fresh > 0 ? `, ${fresh} new` : ''}`;
|
|
341
374
|
}));
|
|
342
375
|
}
|
|
343
376
|
else if (!session.offline) {
|
|
@@ -349,7 +382,7 @@ export async function startupWarmup_run(flags, user, interactive, reporter, repo
|
|
|
349
382
|
if (!session.offline && flags.jobs) {
|
|
350
383
|
let checkpoint = null;
|
|
351
384
|
let rosterAdded = [];
|
|
352
|
-
if (
|
|
385
|
+
if (reportSettlement && user) {
|
|
353
386
|
const cubeUrl = await chrisContext.ChRISURL_get();
|
|
354
387
|
if (cubeUrl) {
|
|
355
388
|
const identity = identity_forSession(user, cubeUrl);
|
|
@@ -380,8 +413,8 @@ export async function startupWarmup_run(flags, user, interactive, reporter, repo
|
|
|
380
413
|
});
|
|
381
414
|
if (jobsResult.ok) {
|
|
382
415
|
const jobsMessage = checkpoint?.restored
|
|
383
|
-
? `Restored ${checkpoint.count
|
|
384
|
-
: `Indexed ${jobsResult.count ?? 0
|
|
416
|
+
? `Restored ${count_noun(checkpoint.count, 'job')}${checkpoint.migrated ? ' (checkpoint migrated to per-feed shards)' : ''}; ${count_noun(jobsResult.count ?? 0, 'feed')}, ${rosterAdded.length} new — full roster refresh in background`
|
|
417
|
+
: `Indexed ${count_noun(jobsResult.count ?? 0, 'feed')} — topology reconciling in background`;
|
|
385
418
|
reporter?.log('ok', 'Jobs', jobsMessage);
|
|
386
419
|
errorStack.scope_run(() => {
|
|
387
420
|
let topologySweep;
|
|
@@ -392,14 +425,14 @@ export async function startupWarmup_run(flags, user, interactive, reporter, repo
|
|
|
392
425
|
procCache_get().warmup_complete();
|
|
393
426
|
topologySweep = procRoster_sync(true).then((changed) => {
|
|
394
427
|
if (changed.length > 0) {
|
|
395
|
-
reporter?.log('ok', 'Roster', `${changed.length
|
|
428
|
+
reporter?.log('ok', 'Roster', `${count_noun(changed.length, 'feed')} moved while away; each refreshes on its next visit`);
|
|
396
429
|
}
|
|
397
430
|
});
|
|
398
431
|
}
|
|
399
432
|
else {
|
|
400
433
|
topologySweep = procTopology_warmup();
|
|
401
434
|
}
|
|
402
|
-
if (
|
|
435
|
+
if (reportSettlement) {
|
|
403
436
|
void topologySweep.then(() => {
|
|
404
437
|
const topology = procTopology_status();
|
|
405
438
|
if (topology.state !== 'complete') {
|
|
@@ -408,7 +441,7 @@ export async function startupWarmup_run(flags, user, interactive, reporter, repo
|
|
|
408
441
|
}
|
|
409
442
|
const progress = procCache_get().warmupProgress_get();
|
|
410
443
|
const total = progress.total > 0 ? progress.total : progress.loaded;
|
|
411
|
-
reporter?.log('ok', 'Topology', `Ready — ${progress.loaded}/${total
|
|
444
|
+
reporter?.log('ok', 'Topology', `Ready — ${progress.loaded}/${count_noun(total, 'job')} indexed`);
|
|
412
445
|
}, (error) => {
|
|
413
446
|
const message = error instanceof Error ? error.message : String(error);
|
|
414
447
|
reporter?.log('fail', 'Topology', `Warm-up failed: ${message}`);
|
|
@@ -440,8 +473,12 @@ export async function startupWarmup_run(flags, user, interactive, reporter, repo
|
|
|
440
473
|
* @param flags - Resource caches selected by daemon boot flags.
|
|
441
474
|
* @param interactive - Whether progress may use an interactive spinner.
|
|
442
475
|
* @param reporter - Daemon boot status logger.
|
|
476
|
+
* @param recovery - Asks the operator what to do after an exhausted warm-up.
|
|
477
|
+
* @param hostControlInputs - The host-control policy inputs.
|
|
478
|
+
* @param console - Puts a surface on this terminal once the daemon is up;
|
|
479
|
+
* the daemon console by default, replaceable under test.
|
|
443
480
|
*/
|
|
444
|
-
export async function daemonSession_run(engine, user, flags, interactive, reporter, recovery = daemonWarmupFailure_decide, hostControlInputs = {}) {
|
|
481
|
+
export async function daemonSession_run(engine, user, flags, interactive, reporter, recovery = daemonWarmupFailure_decide, hostControlInputs = {}, console = daemonConsole_run) {
|
|
445
482
|
try {
|
|
446
483
|
// Warm-up runs before the daemon installs its own sink, so the engine is
|
|
447
484
|
// still writing to this terminal — and a daemon boot is the one time
|
|
@@ -457,6 +494,15 @@ export async function daemonSession_run(engine, user, flags, interactive, report
|
|
|
457
494
|
}
|
|
458
495
|
const info = await daemon_launch(engine, async () => {
|
|
459
496
|
const cache = await startupWarmup_run(flags, user, interactive, reporter, true);
|
|
497
|
+
// The steps warming behind the prompt settle on the readout before the
|
|
498
|
+
// login takes the terminal. They ran in parallel with the blocking
|
|
499
|
+
// warm-up; the boot now waits out whatever has not yet landed, so every
|
|
500
|
+
// row the operator is left looking at reads [ OK ] or [FAIL], never an
|
|
501
|
+
// open [PENDING] the console would cage before it could finish. The
|
|
502
|
+
// wait is bounded — each step carries its own retry budget — and the
|
|
503
|
+
// daemon is moments from listening, so nothing reaches it any sooner
|
|
504
|
+
// for the wait.
|
|
505
|
+
await Promise.allSettled(cache.deferred.map((step) => step.settled));
|
|
460
506
|
if (cache.failures.length === 0) {
|
|
461
507
|
reporter.log('ok', 'Engine', 'Ready');
|
|
462
508
|
return;
|
|
@@ -468,40 +514,16 @@ export async function daemonSession_run(engine, user, flags, interactive, report
|
|
|
468
514
|
reporter.log('fail', 'Engine', `Starting with incomplete warm-up: ${cache.failures.join(', ')}`);
|
|
469
515
|
}, { hostControl: parsedPolicy.policy });
|
|
470
516
|
if (interactive) {
|
|
471
|
-
// Boot is over. The
|
|
472
|
-
//
|
|
473
|
-
//
|
|
474
|
-
//
|
|
517
|
+
// Boot is over. The pulse halts without a final repaint — its row
|
|
518
|
+
// arithmetic drifts over the addresses just printed — and the boot
|
|
519
|
+
// ends the way a boot should: at a login. The identity is already
|
|
520
|
+
// resolved, so the login is the attach, and this terminal becomes
|
|
521
|
+
// the daemon's first surface.
|
|
475
522
|
logo_animateHalt();
|
|
476
|
-
|
|
477
|
-
{ label: 'identity', value: info.identity },
|
|
478
|
-
{ label: 'wire', value: info.url },
|
|
479
|
-
...(info.argusUrl !== null ? [{ label: 'ARGUS', value: info.argusUrl }] : []),
|
|
480
|
-
{ label: 'token', value: info.token },
|
|
481
|
-
{ label: 'berth', value: info.berthPath },
|
|
482
|
-
{ label: 'attach', value: `chell --remote --attach ${info.url} --token ${info.token}` },
|
|
483
|
-
];
|
|
484
|
-
face_ready({
|
|
485
|
-
info: faceInfo,
|
|
486
|
-
...(info.hostControl.tiers.size > 0
|
|
487
|
-
? { hostControl: { tiers: hostControl_describe(info.hostControl), ...(info.hostControl.exposed && info.bindHost !== '127.0.0.1' ? { exposedOn: info.bindHost } : {}) } }
|
|
488
|
-
: {}),
|
|
489
|
-
telemetry_get: () => {
|
|
490
|
-
const index = procIndex_snapshot();
|
|
491
|
-
return {
|
|
492
|
-
sessions: info.daemon.surfaces_count(),
|
|
493
|
-
busy: info.daemon.busy_get(),
|
|
494
|
-
jobs: index.jobs,
|
|
495
|
-
feeds: index.feeds,
|
|
496
|
-
};
|
|
497
|
-
},
|
|
498
|
-
});
|
|
523
|
+
await console({ identity: info.identity, url: info.url, token: info.token });
|
|
499
524
|
}
|
|
500
525
|
}
|
|
501
526
|
catch (error) {
|
|
502
|
-
// A boot dying with the face up must hand the terminal back — and flush
|
|
503
|
-
// whatever the ring caged, the abort reason included.
|
|
504
|
-
face_stop();
|
|
505
527
|
if (error instanceof DaemonWarmupAbortedError) {
|
|
506
528
|
process.exitCode = 1;
|
|
507
529
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startupWarmup.js","sourceRoot":"","sources":["../../src/core/startupWarmup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"startupWarmup.js","sourceRoot":"","sources":["../../src/core/startupWarmup.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
+
import { type RowStream } from './terminalRows.js';
|
|
6
7
|
/**
|
|
7
8
|
* A single labeled boot-info line.
|
|
8
9
|
*/
|
|
@@ -41,14 +42,38 @@ export type BootStatus = 'ok' | 'retry' | 'skip' | 'fail' | 'pending';
|
|
|
41
42
|
* right of every other row's.
|
|
42
43
|
*/
|
|
43
44
|
export declare const BOOT_TAG_WIDTH: number;
|
|
45
|
+
/** What the boot readout needs of its terminal. */
|
|
46
|
+
export interface BootTerminal extends RowStream {
|
|
47
|
+
isTTY?: boolean;
|
|
48
|
+
rows?: number;
|
|
49
|
+
}
|
|
50
|
+
/** Where the readout draws, and which other streams scroll the same screen. */
|
|
51
|
+
export interface BootLoggerOptions {
|
|
52
|
+
/** The readout's own stream; `process.stdout` by default. */
|
|
53
|
+
terminal?: BootTerminal;
|
|
54
|
+
/**
|
|
55
|
+
* Streams that share the terminal's screen without being the readout's
|
|
56
|
+
* own — `process.stderr` by default — so what they scroll is counted too.
|
|
57
|
+
*/
|
|
58
|
+
shared?: RowStream[];
|
|
59
|
+
}
|
|
44
60
|
/**
|
|
45
61
|
* Creates a boot logger that renders a titled status box.
|
|
46
62
|
*
|
|
63
|
+
* On a terminal, a step that starts as `[PENDING]` (or falls to `[RETRY]`)
|
|
64
|
+
* is rewritten in place when its outcome lands, the way a boot screen
|
|
65
|
+
* settles a row rather than repeating it beneath. Every write to the screen
|
|
66
|
+
* is counted between the two moments, so the rewrite reaches the right row
|
|
67
|
+
* however much scrolled meanwhile — and gives up, appending instead, when
|
|
68
|
+
* the row has left the screen or the outcome needs more rows than it had.
|
|
69
|
+
* Off a terminal rows only append.
|
|
70
|
+
*
|
|
47
71
|
* @param title - Box title.
|
|
48
72
|
* @param useAscii - Use ASCII (vs unicode) box characters.
|
|
73
|
+
* @param options - The terminal to draw on; the process's own by default.
|
|
49
74
|
* @returns A boot logger exposing status-logging helpers.
|
|
50
75
|
*/
|
|
51
|
-
export declare function bootLogger_create(title: string, useAscii: boolean): {
|
|
76
|
+
export declare function bootLogger_create(title: string, useAscii: boolean, options?: BootLoggerOptions): {
|
|
52
77
|
header_print(): void;
|
|
53
78
|
footer_print(): void;
|
|
54
79
|
log(status: BootStatus, label: string, message: string): void;
|
package/dist/lib/bootsequence.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
6
|
import chalk from 'chalk';
|
|
7
|
+
import { streamRows_track, stdoutRows_ensure, stdoutRows_current } from './terminalRows.js';
|
|
7
8
|
function text_visibleLength(text) {
|
|
8
9
|
// Strip all ANSI escape sequences robustly to calculate correct visible width
|
|
9
10
|
return text.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '').length;
|
|
@@ -33,11 +34,39 @@ export const BOOT_TAG_WIDTH = Math.max(...Object.values(BOOT_STATUS_TAGS).map((t
|
|
|
33
34
|
/**
|
|
34
35
|
* Creates a boot logger that renders a titled status box.
|
|
35
36
|
*
|
|
37
|
+
* On a terminal, a step that starts as `[PENDING]` (or falls to `[RETRY]`)
|
|
38
|
+
* is rewritten in place when its outcome lands, the way a boot screen
|
|
39
|
+
* settles a row rather than repeating it beneath. Every write to the screen
|
|
40
|
+
* is counted between the two moments, so the rewrite reaches the right row
|
|
41
|
+
* however much scrolled meanwhile — and gives up, appending instead, when
|
|
42
|
+
* the row has left the screen or the outcome needs more rows than it had.
|
|
43
|
+
* Off a terminal rows only append.
|
|
44
|
+
*
|
|
36
45
|
* @param title - Box title.
|
|
37
46
|
* @param useAscii - Use ASCII (vs unicode) box characters.
|
|
47
|
+
* @param options - The terminal to draw on; the process's own by default.
|
|
38
48
|
* @returns A boot logger exposing status-logging helpers.
|
|
39
49
|
*/
|
|
40
|
-
export function bootLogger_create(title, useAscii) {
|
|
50
|
+
export function bootLogger_create(title, useAscii, options = {}) {
|
|
51
|
+
const terminal = options.terminal ?? process.stdout;
|
|
52
|
+
const ownsStdout = terminal === process.stdout;
|
|
53
|
+
// On the real terminal the boot readout shares one row tracker with the
|
|
54
|
+
// brain animation, so neither hooks stdout's write twice nor miscounts the
|
|
55
|
+
// other's scrolling. An injected test terminal gets its own local tracker.
|
|
56
|
+
const localTracked = terminal.isTTY === true && !ownsStdout ? streamRows_track(terminal) : null;
|
|
57
|
+
if (localTracked !== null) {
|
|
58
|
+
for (const stream of options.shared ?? [])
|
|
59
|
+
streamRows_track(stream, localTracked.counter);
|
|
60
|
+
}
|
|
61
|
+
const rows_tracked = () => {
|
|
62
|
+
if (terminal.isTTY !== true)
|
|
63
|
+
return null;
|
|
64
|
+
if (!ownsStdout)
|
|
65
|
+
return localTracked;
|
|
66
|
+
// Whatever the animation installed; failing that, install it here.
|
|
67
|
+
return stdoutRows_current() ?? stdoutRows_ensure();
|
|
68
|
+
};
|
|
69
|
+
const open = new Map();
|
|
41
70
|
const horiz = useAscii ? '-' : '─';
|
|
42
71
|
const cornerTL = useAscii ? '+' : '┌';
|
|
43
72
|
const cornerTR = useAscii ? '+' : '┐';
|
|
@@ -54,12 +83,62 @@ export function bootLogger_create(title, useAscii) {
|
|
|
54
83
|
// bytes the colour cost.
|
|
55
84
|
return paint(text.padEnd(BOOT_TAG_WIDTH));
|
|
56
85
|
};
|
|
86
|
+
/**
|
|
87
|
+
* Rewrites an open row where it stands.
|
|
88
|
+
*
|
|
89
|
+
* @param row - The settled row, painted.
|
|
90
|
+
* @param target - Where the open row was printed and how many rows it took.
|
|
91
|
+
* @returns False when the row cannot be reached or the outcome does not fit.
|
|
92
|
+
*/
|
|
93
|
+
const row_rewrite = (row, target, tracked) => {
|
|
94
|
+
const up = tracked.counter.rows_get() - target.at;
|
|
95
|
+
// A terminal that reports no height (a pty that never sent its size)
|
|
96
|
+
// reads as zero, not absent, so default on any non-positive height —
|
|
97
|
+
// never `?? 24`, which a real zero slips straight through.
|
|
98
|
+
const screenRows = terminal.rows && terminal.rows > 0 ? terminal.rows : 24;
|
|
99
|
+
if (up <= 0 || up >= screenRows)
|
|
100
|
+
return false;
|
|
101
|
+
const needed = Math.max(1, Math.ceil(text_visibleLength(row) / (terminal.columns || 80)));
|
|
102
|
+
if (needed > target.rows)
|
|
103
|
+
return false;
|
|
104
|
+
// One write: save the cursor, climb to the row, clear every row it took,
|
|
105
|
+
// paint the outcome from its first row, and return — so a spinner
|
|
106
|
+
// mid-row below is left exactly where it was.
|
|
107
|
+
let text = `\x1b[s\x1b[${up}A`;
|
|
108
|
+
for (let index = 0; index < target.rows; index++) {
|
|
109
|
+
text += `\r\x1b[2K${index < target.rows - 1 ? '\x1b[1B' : ''}`;
|
|
110
|
+
}
|
|
111
|
+
if (target.rows > 1)
|
|
112
|
+
text += `\x1b[${target.rows - 1}A`;
|
|
113
|
+
text += `\r${row}\x1b[u`;
|
|
114
|
+
tracked.write_raw(text);
|
|
115
|
+
return true;
|
|
116
|
+
};
|
|
57
117
|
return {
|
|
58
|
-
header_print() {
|
|
59
|
-
footer_print() {
|
|
118
|
+
header_print() { terminal.write(`${lineTop}\n`); },
|
|
119
|
+
footer_print() { terminal.write(`${lineBot}\n`); },
|
|
60
120
|
log(status, label, message) {
|
|
61
|
-
|
|
62
|
-
|
|
121
|
+
const row = `${statusTag(status)} ${statusPad(label)} ${message}`;
|
|
122
|
+
const stillOpen = status === 'pending' || status === 'retry';
|
|
123
|
+
const tracked = rows_tracked();
|
|
124
|
+
const target = open.get(label);
|
|
125
|
+
if (target !== undefined && tracked !== null && row_rewrite(row, target, tracked)) {
|
|
126
|
+
if (!stillOpen)
|
|
127
|
+
open.delete(label);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
// A row lands on a row of its own. A spinner mid-row is cleared first
|
|
131
|
+
// and redraws itself beneath on its next tick.
|
|
132
|
+
if (tracked !== null && tracked.counter.column_get() > 0)
|
|
133
|
+
terminal.write('\r\x1b[2K');
|
|
134
|
+
const at = tracked?.counter.rows_get() ?? 0;
|
|
135
|
+
terminal.write(`${row}\n`);
|
|
136
|
+
const rows = tracked === null ? 1 : tracked.counter.rows_get() - at;
|
|
137
|
+
if (stillOpen)
|
|
138
|
+
open.set(label, { at, rows });
|
|
139
|
+
else
|
|
140
|
+
open.delete(label);
|
|
141
|
+
},
|
|
63
142
|
};
|
|
64
143
|
}
|
|
65
144
|
function box_render(title, rows, useColor, useAscii) {
|