25 lines
954 B
TypeScript
25 lines
954 B
TypeScript
|
|
import type { Context } from 'cordis'
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Marker the shipped-composition smoke gates its first prompt on. The TUI renders as soon as
|
||
|
|
* its own fiber starts, so a prompt typed at the banner can reach the loop while
|
||
|
|
* later rows — tool plugins, persistence — are still activating, and would
|
||
|
|
* assemble a partial catalog. Waiting for this line makes the turn observe the
|
||
|
|
* settled tree.
|
||
|
|
*/
|
||
|
|
export const COMPOSITION_SETTLED_MARKER = 'COMPOSITION_TREE_SETTLED'
|
||
|
|
|
||
|
|
export const name = 'composition-settled'
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Announce settled Loader activation on the terminal byte stream, after every
|
||
|
|
* entry in the booted tree has started. The write is detached: awaiting the
|
||
|
|
* Loader from inside an entry would wait on this entry's own activation.
|
||
|
|
* @param ctx - the loader-mounted plugin context.
|
||
|
|
*/
|
||
|
|
export function apply(ctx: Context): void {
|
||
|
|
void ctx.loader.await().then(() => {
|
||
|
|
process.stdout.write(`\n${COMPOSITION_SETTLED_MARKER}\n`)
|
||
|
|
})
|
||
|
|
}
|