@fnndsc/chell 5.2.2 → 5.3.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/README.md +119 -27
- package/dist/config/settings.js +14 -4
- package/dist/config/settings.js.map +1 -1
- package/dist/core/boot.js +16 -4
- package/dist/core/boot.js.map +1 -1
- package/dist/core/bootFlags.js +2 -1
- package/dist/core/bootFlags.js.map +1 -1
- package/dist/core/cli.js +3 -0
- package/dist/core/cli.js.map +1 -1
- package/dist/core/cliSurface.js +25 -2
- package/dist/core/cliSurface.js.map +1 -1
- package/dist/core/progressRenderer.d.ts +13 -0
- package/dist/core/progressRenderer.js +44 -0
- package/dist/core/progressRenderer.js.map +1 -1
- package/dist/core/prompt/index.d.ts +3 -4
- package/dist/core/prompt/index.js.map +1 -1
- package/dist/core/prompt/palette.d.ts +41 -0
- package/dist/core/prompt/palette.js +35 -0
- package/dist/core/prompt/palette.js.map +1 -0
- package/dist/core/prompt/theme_default.js +27 -10
- package/dist/core/prompt/theme_default.js.map +1 -1
- package/dist/core/prompt/theme_p10k.d.ts +3 -3
- package/dist/core/prompt/theme_p10k.js +73 -36
- package/dist/core/prompt/theme_p10k.js.map +1 -1
- package/dist/core/prompt/utils.d.ts +22 -0
- package/dist/core/prompt/utils.js +34 -0
- package/dist/core/prompt/utils.js.map +1 -1
- package/dist/core/repl.js +9 -1
- package/dist/core/repl.js.map +1 -1
- package/dist/core/startupWarmup.d.ts +10 -4
- package/dist/core/startupWarmup.js +152 -22
- package/dist/core/startupWarmup.js.map +1 -1
- package/dist/lib/bootsequence.d.ts +2 -2
- package/dist/lib/bootsequence.js +1 -0
- package/dist/lib/bootsequence.js.map +1 -1
- package/dist/remote/client.d.ts +3 -1
- package/dist/remote/client.js +60 -6
- package/dist/remote/client.js.map +1 -1
- package/dist/remote/remoteEngine.d.ts +41 -8
- package/dist/remote/remoteEngine.js +119 -41
- package/dist/remote/remoteEngine.js.map +1 -1
- package/package.json +12 -11
|
@@ -19,8 +19,13 @@ export interface ProgressBarFactory {
|
|
|
19
19
|
preset: unknown;
|
|
20
20
|
}
|
|
21
21
|
export interface ProgressRendererOptions {
|
|
22
|
+
/** Counted progress bars and non-interactive terminal summaries. */
|
|
22
23
|
stream?: NodeJS.WriteStream;
|
|
24
|
+
/** Ephemeral status output; defaults to stderr. */
|
|
25
|
+
statusStream?: NodeJS.WriteStream;
|
|
26
|
+
/** Override terminal detection, primarily for host adapters and tests. */
|
|
23
27
|
isTTY?: boolean;
|
|
28
|
+
/** Progress-bar implementation, primarily for deterministic tests. */
|
|
24
29
|
factory?: ProgressBarFactory;
|
|
25
30
|
}
|
|
26
31
|
/**
|
|
@@ -28,15 +33,23 @@ export interface ProgressRendererOptions {
|
|
|
28
33
|
*/
|
|
29
34
|
export declare class TerminalProgressRenderer implements ProgressRenderer {
|
|
30
35
|
private readonly stream;
|
|
36
|
+
private readonly statusStream;
|
|
31
37
|
private readonly isTTY;
|
|
38
|
+
private readonly inspectionIsTTY;
|
|
32
39
|
private readonly factory;
|
|
33
40
|
private readonly transferBars;
|
|
34
41
|
private readonly pullBars;
|
|
35
42
|
private pullMultiBar;
|
|
36
43
|
private pullBaseWidth;
|
|
44
|
+
private inspectionInterval;
|
|
45
|
+
private inspectionFrameIndex;
|
|
46
|
+
private inspectionLabel;
|
|
37
47
|
constructor(options?: ProgressRendererOptions);
|
|
38
48
|
write(event: ProgressEvent): void;
|
|
39
49
|
clear(): void;
|
|
50
|
+
private inspection_write;
|
|
51
|
+
private inspection_render;
|
|
52
|
+
private inspection_stop;
|
|
40
53
|
private transfer_write;
|
|
41
54
|
private pull_write;
|
|
42
55
|
/** Formats a pull label as fixed-width `name` + `status` columns, so bars align. */
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* @module
|
|
9
9
|
*/
|
|
10
10
|
import cliProgress from 'cli-progress';
|
|
11
|
+
import chalk from 'chalk';
|
|
11
12
|
const TERMINAL_STATUSES = new Set([
|
|
12
13
|
'done',
|
|
13
14
|
'unconfirmed',
|
|
@@ -15,6 +16,8 @@ const TERMINAL_STATUSES = new Set([
|
|
|
15
16
|
'timeout',
|
|
16
17
|
'error',
|
|
17
18
|
]);
|
|
19
|
+
const INSPECTION_FRAMES = ['⣾', '⣽', '⣻', '⢿', '⡿', '⣟', '⣯', '⣷'];
|
|
20
|
+
const INSPECTION_FRAME_MS = 80;
|
|
18
21
|
function defaultFactory_get() {
|
|
19
22
|
return {
|
|
20
23
|
SingleBar: cliProgress.SingleBar,
|
|
@@ -79,18 +82,30 @@ function fallback_line(event) {
|
|
|
79
82
|
*/
|
|
80
83
|
export class TerminalProgressRenderer {
|
|
81
84
|
stream;
|
|
85
|
+
statusStream;
|
|
82
86
|
isTTY;
|
|
87
|
+
inspectionIsTTY;
|
|
83
88
|
factory;
|
|
84
89
|
transferBars = new Map();
|
|
85
90
|
pullBars = new Map();
|
|
86
91
|
pullMultiBar = null;
|
|
87
92
|
pullBaseWidth = 0;
|
|
93
|
+
inspectionInterval = null;
|
|
94
|
+
inspectionFrameIndex = 0;
|
|
95
|
+
inspectionLabel = '';
|
|
88
96
|
constructor(options = {}) {
|
|
89
97
|
this.stream = options.stream ?? process.stdout;
|
|
98
|
+
this.statusStream = options.statusStream ?? process.stderr;
|
|
90
99
|
this.isTTY = options.isTTY ?? !!this.stream.isTTY;
|
|
100
|
+
this.inspectionIsTTY = this.isTTY && !!this.statusStream.isTTY;
|
|
91
101
|
this.factory = options.factory ?? defaultFactory_get();
|
|
92
102
|
}
|
|
93
103
|
write(event) {
|
|
104
|
+
if (event.operation === 'pipeline' || event.kind === 'inspection') {
|
|
105
|
+
if (this.inspectionIsTTY)
|
|
106
|
+
this.inspection_write(event);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
94
109
|
if (!this.isTTY) {
|
|
95
110
|
if (fallback_shouldPrint(event)) {
|
|
96
111
|
this.stream.write(fallback_line(event));
|
|
@@ -112,6 +127,7 @@ export class TerminalProgressRenderer {
|
|
|
112
127
|
this.transfer_write(event);
|
|
113
128
|
}
|
|
114
129
|
clear() {
|
|
130
|
+
this.inspection_stop();
|
|
115
131
|
for (const state of this.transferBars.values()) {
|
|
116
132
|
state.bar.stop?.();
|
|
117
133
|
}
|
|
@@ -121,6 +137,34 @@ export class TerminalProgressRenderer {
|
|
|
121
137
|
this.pullBars.clear();
|
|
122
138
|
this.pullBaseWidth = 0;
|
|
123
139
|
}
|
|
140
|
+
inspection_write(event) {
|
|
141
|
+
if (event.phase === 'complete' || event.phase === 'failed') {
|
|
142
|
+
this.inspection_stop();
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
this.inspectionLabel = event.label ?? 'Reading registered pipeline…';
|
|
146
|
+
if (this.inspectionInterval !== null)
|
|
147
|
+
return;
|
|
148
|
+
this.inspectionFrameIndex = 0;
|
|
149
|
+
this.statusStream.write('\x1B[?25l');
|
|
150
|
+
this.inspection_render();
|
|
151
|
+
this.inspectionInterval = setInterval(() => {
|
|
152
|
+
this.inspectionFrameIndex = (this.inspectionFrameIndex + 1) % INSPECTION_FRAMES.length;
|
|
153
|
+
this.inspection_render();
|
|
154
|
+
}, INSPECTION_FRAME_MS);
|
|
155
|
+
}
|
|
156
|
+
inspection_render() {
|
|
157
|
+
const frame = INSPECTION_FRAMES[this.inspectionFrameIndex];
|
|
158
|
+
this.statusStream.write(`\r\x1b[K${chalk.cyanBright(frame)} ${chalk.gray(this.inspectionLabel)}`);
|
|
159
|
+
}
|
|
160
|
+
inspection_stop() {
|
|
161
|
+
if (this.inspectionInterval === null)
|
|
162
|
+
return;
|
|
163
|
+
clearInterval(this.inspectionInterval);
|
|
164
|
+
this.inspectionInterval = null;
|
|
165
|
+
this.statusStream.write('\r\x1b[K');
|
|
166
|
+
this.statusStream.write('\x1B[?25h');
|
|
167
|
+
}
|
|
124
168
|
transfer_write(event) {
|
|
125
169
|
if (event.phase === 'complete' || event.phase === 'failed') {
|
|
126
170
|
const existing = this.transferBars.get(event.operation);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progressRenderer.js","sourceRoot":"","sources":["../../src/core/progressRenderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,WAAW,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"progressRenderer.js","sourceRoot":"","sources":["../../src/core/progressRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
|
+
import type { ProcPromptProgress } from '@fnndsc/cumin';
|
|
9
10
|
/**
|
|
10
11
|
* Which optional p10k segments are enabled.
|
|
11
12
|
*
|
|
@@ -43,10 +44,8 @@ export interface PromptContext {
|
|
|
43
44
|
lastExitCode: number;
|
|
44
45
|
lastCommandDurationMs: number;
|
|
45
46
|
p10kSegments: P10kSegmentConfig;
|
|
46
|
-
/** Present while /proc
|
|
47
|
-
procWarmup?:
|
|
48
|
-
loaded: number;
|
|
49
|
-
};
|
|
47
|
+
/** Present while /proc indexing is active, reconciling, or has failed. */
|
|
48
|
+
procWarmup?: ProcPromptProgress;
|
|
50
49
|
}
|
|
51
50
|
/**
|
|
52
51
|
* Contract every prompt theme must satisfy.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/prompt/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/prompt/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAiE5C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,WAAW,GAAyB,CAAC,SAAS,EAAE,MAAM,CAAU,CAAC;AAE9E,2DAA2D;AAC3D,MAAM,CAAC,MAAM,sBAAsB,GACjC,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAU,CAAC;AAElD,MAAM,QAAQ,GAAmC;IAC/C,OAAO,EAAE,IAAI,YAAY,EAAE;IAC3B,IAAI,EAAE,IAAI,SAAS,EAAE;CACtB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAgB,EAAE,GAAkB;IAChE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Shared high-contrast prompt colour palette.
|
|
3
|
+
*
|
|
4
|
+
* Provides vivid Powerlevel10k-inspired truecolor accents for both the compact
|
|
5
|
+
* default prompt and the background-filled powerline theme.
|
|
6
|
+
*
|
|
7
|
+
* Prompt themes consume these values through Chalk, which preserves truecolor
|
|
8
|
+
* where supported and performs any terminal-level colour downgrade.
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
/** CSS-style hexadecimal colour accepted by Chalk's `hex` methods. */
|
|
13
|
+
export type HexColor = `#${string}`;
|
|
14
|
+
/** Foreground/background colours for one powerline segment. */
|
|
15
|
+
export interface PromptColorPair {
|
|
16
|
+
bg: HexColor;
|
|
17
|
+
fg: HexColor;
|
|
18
|
+
}
|
|
19
|
+
/** Complete colour vocabulary shared by ChELL prompt themes. */
|
|
20
|
+
export interface PromptPalette {
|
|
21
|
+
HOST: PromptColorPair;
|
|
22
|
+
PACS: PromptColorPair;
|
|
23
|
+
USER: PromptColorPair;
|
|
24
|
+
DIR: PromptColorPair;
|
|
25
|
+
PHYSICAL: PromptColorPair;
|
|
26
|
+
TIME: PromptColorPair;
|
|
27
|
+
DURATION: PromptColorPair;
|
|
28
|
+
STATUS: PromptColorPair;
|
|
29
|
+
SUCCESS: HexColor;
|
|
30
|
+
ERROR: HexColor;
|
|
31
|
+
WARMUP: HexColor;
|
|
32
|
+
}
|
|
33
|
+
/** Vivid truecolor palette modelled after Powerlevel10k's rainbow style. */
|
|
34
|
+
export declare const PROMPT_PALETTE: PromptPalette;
|
|
35
|
+
/**
|
|
36
|
+
* Selects the prompt accent for the previous command's exit status.
|
|
37
|
+
*
|
|
38
|
+
* @param exitCode - Previous command's process exit code.
|
|
39
|
+
* @returns Success colour for zero; error colour otherwise.
|
|
40
|
+
*/
|
|
41
|
+
export declare function statusColor_get(exitCode: number): HexColor;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Shared high-contrast prompt colour palette.
|
|
3
|
+
*
|
|
4
|
+
* Provides vivid Powerlevel10k-inspired truecolor accents for both the compact
|
|
5
|
+
* default prompt and the background-filled powerline theme.
|
|
6
|
+
*
|
|
7
|
+
* Prompt themes consume these values through Chalk, which preserves truecolor
|
|
8
|
+
* where supported and performs any terminal-level colour downgrade.
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
/** Vivid truecolor palette modelled after Powerlevel10k's rainbow style. */
|
|
13
|
+
export const PROMPT_PALETTE = {
|
|
14
|
+
HOST: { bg: '#00AFFF', fg: '#001018' },
|
|
15
|
+
PACS: { bg: '#875FFF', fg: '#FFFFFF' },
|
|
16
|
+
USER: { bg: '#00D787', fg: '#00140C' },
|
|
17
|
+
DIR: { bg: '#FFD75F', fg: '#201800' },
|
|
18
|
+
PHYSICAL: { bg: '#FF5F5F', fg: '#1B0000' },
|
|
19
|
+
TIME: { bg: '#5F5F87', fg: '#FFFFFF' },
|
|
20
|
+
DURATION: { bg: '#FF8700', fg: '#201000' },
|
|
21
|
+
STATUS: { bg: '#FF005F', fg: '#FFFFFF' },
|
|
22
|
+
SUCCESS: '#00D787',
|
|
23
|
+
ERROR: '#FF005F',
|
|
24
|
+
WARMUP: '#AF87FF',
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Selects the prompt accent for the previous command's exit status.
|
|
28
|
+
*
|
|
29
|
+
* @param exitCode - Previous command's process exit code.
|
|
30
|
+
* @returns Success colour for zero; error colour otherwise.
|
|
31
|
+
*/
|
|
32
|
+
export function statusColor_get(exitCode) {
|
|
33
|
+
return exitCode === 0 ? PROMPT_PALETTE.SUCCESS : PROMPT_PALETTE.ERROR;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=palette.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"palette.js","sourceRoot":"","sources":["../../../src/core/prompt/palette.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA0BH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,IAAI,EAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC1C,IAAI,EAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC1C,IAAI,EAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC1C,GAAG,EAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC1C,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC1C,IAAI,EAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC1C,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC1C,MAAM,EAAI,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC1C,OAAO,EAAG,SAAS;IACnB,KAAK,EAAK,SAAS;IACnB,MAAM,EAAI,SAAS;CACpB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC;AACxE,CAAC"}
|
|
@@ -11,16 +11,26 @@
|
|
|
11
11
|
* @module
|
|
12
12
|
*/
|
|
13
13
|
import chalk from 'chalk';
|
|
14
|
-
import {
|
|
14
|
+
import { procPromptState_get } from '@fnndsc/cumin/proc-prompt';
|
|
15
|
+
import { PROMPT_PALETTE, statusColor_get } from './palette.js';
|
|
16
|
+
import { ansi_visibleLength, homePath_abbreviate, path_truncate, procProgress_format, } from './utils.js';
|
|
15
17
|
/** Fraction of terminal width allowed before path truncation kicks in. */
|
|
16
18
|
const FILL_RATIO = 0.8;
|
|
19
|
+
/** Human-readable prompt label for each process-index state. */
|
|
20
|
+
const PROC_STATE_LABELS = {
|
|
21
|
+
cold: 'cold',
|
|
22
|
+
cached: 'cached, refreshing',
|
|
23
|
+
failed: 'failed',
|
|
24
|
+
};
|
|
17
25
|
/**
|
|
18
26
|
* Default single-line prompt theme with smart path truncation.
|
|
19
27
|
*/
|
|
20
28
|
export class ThemeDefault {
|
|
21
29
|
render(ctx) {
|
|
22
30
|
const limit = Math.floor(ctx.terminalWidth * FILL_RATIO);
|
|
23
|
-
const modePrefix = ctx.physicalMode
|
|
31
|
+
const modePrefix = ctx.physicalMode
|
|
32
|
+
? chalk.hex(PROMPT_PALETTE.PHYSICAL.bg)('[PHYSICAL] ')
|
|
33
|
+
: '';
|
|
24
34
|
// Compute fixed visible length: modePrefix + user + '@' + uri + ':' + '$ '
|
|
25
35
|
const fixedVisible = ansi_visibleLength(modePrefix) +
|
|
26
36
|
ctx.user.length +
|
|
@@ -29,17 +39,24 @@ export class ThemeDefault {
|
|
|
29
39
|
1 + // ':'
|
|
30
40
|
2; // '$ '
|
|
31
41
|
const pathBudget = limit - fixedVisible;
|
|
32
|
-
const
|
|
33
|
-
const
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
42
|
+
const displayPath = homePath_abbreviate(ctx.cwd, ctx.user);
|
|
43
|
+
const path = path_truncate(displayPath, pathBudget);
|
|
44
|
+
const glyphColor = statusColor_get(ctx.lastExitCode);
|
|
45
|
+
const glyph = chalk.hex(glyphColor)('$ ');
|
|
46
|
+
let warmup = '';
|
|
47
|
+
if (ctx.procWarmup) {
|
|
48
|
+
const state = procPromptState_get(ctx.procWarmup);
|
|
49
|
+
const color = state === 'failed'
|
|
50
|
+
? PROMPT_PALETTE.ERROR
|
|
51
|
+
: PROMPT_PALETTE.WARMUP;
|
|
52
|
+
warmup = chalk.hex(color)(` [proc ${PROC_STATE_LABELS[state]}: ${procProgress_format(ctx.procWarmup.loaded, ctx.procWarmup.total ?? 0)}]`);
|
|
53
|
+
}
|
|
37
54
|
return (modePrefix +
|
|
38
|
-
chalk.
|
|
55
|
+
chalk.hex(PROMPT_PALETTE.USER.bg)(ctx.user) +
|
|
39
56
|
'@' +
|
|
40
|
-
chalk.
|
|
57
|
+
chalk.hex(PROMPT_PALETTE.HOST.bg)(ctx.uri) +
|
|
41
58
|
':' +
|
|
42
|
-
chalk.
|
|
59
|
+
chalk.hex(PROMPT_PALETTE.DIR.bg)(path) +
|
|
43
60
|
warmup +
|
|
44
61
|
glyph);
|
|
45
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme_default.js","sourceRoot":"","sources":["../../../src/core/prompt/theme_default.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"theme_default.js","sourceRoot":"","sources":["../../../src/core/prompt/theme_default.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAwB,MAAM,2BAA2B,CAAC;AAEtF,OAAO,EAAE,cAAc,EAAE,eAAe,EAAiB,MAAM,cAAc,CAAC;AAC9E,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,0EAA0E;AAC1E,MAAM,UAAU,GAAW,GAAG,CAAC;AAE/B,gEAAgE;AAChE,MAAM,iBAAiB,GAAoC;IACzD,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,oBAAoB;IAC5B,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,GAAkB;QACvB,MAAM,KAAK,GAAW,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,GAAG,UAAU,CAAC,CAAC;QACjE,MAAM,UAAU,GAAW,GAAG,CAAC,YAAY;YACzC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC;YACtD,CAAC,CAAC,EAAE,CAAC;QAEP,2EAA2E;QAC3E,MAAM,YAAY,GAChB,kBAAkB,CAAC,UAAU,CAAC;YAC9B,GAAG,CAAC,IAAI,CAAC,MAAM;YACf,CAAC,GAAG,MAAM;YACV,GAAG,CAAC,GAAG,CAAC,MAAM;YACd,CAAC,GAAG,MAAM;YACV,CAAC,CAAC,CAAE,OAAO;QAEb,MAAM,UAAU,GAAW,KAAK,GAAG,YAAY,CAAC;QAChD,MAAM,WAAW,GAAW,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACnE,MAAM,IAAI,GAAW,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAE5D,MAAM,UAAU,GAAa,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAW,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,MAAM,GAAW,EAAE,CAAC;QACxB,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACnB,MAAM,KAAK,GAAoB,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACnE,MAAM,KAAK,GAAa,KAAK,KAAK,QAAQ;gBACxC,CAAC,CAAC,cAAc,CAAC,KAAK;gBACtB,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC;YAC1B,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CACvB,UAAU,iBAAiB,CAAC,KAAK,CAAC,KAAK,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAChH,CAAC;QACJ,CAAC;QACD,OAAO,CACL,UAAU;YACV,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;YAC3C,GAAG;YACH,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;YAC1C,GAAG;YACH,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;YACtC,MAAM;YACN,KAAK,CACN,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Two-line prompt:
|
|
5
5
|
* Line 1 — coloured segment bar with background fills and powerline separators
|
|
6
|
-
*
|
|
6
|
+
* [ pacs ❯] host ❯ user ❯ path ❯ [proc ❯] [ HH:MM ❯] [ Xs ❯] [ N ❯]
|
|
7
7
|
* Line 2 — input line: ❯
|
|
8
8
|
*
|
|
9
|
-
*
|
|
9
|
+
* Font Awesome icons and the powerline separator require a Nerd Font.
|
|
10
10
|
* readline uses only the last line's visible width for cursor and
|
|
11
11
|
* tab-completion alignment, so line 1 never interferes with line editing.
|
|
12
12
|
*
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
import type { PromptContext, PromptTheme } from './index.js';
|
|
16
16
|
/**
|
|
17
17
|
* Powerlevel10k-inspired two-line prompt theme with background-coloured segments.
|
|
18
|
-
* Segment order:
|
|
18
|
+
* Segment order: [pacs] host user dir [proc] [physical] [time] [duration] [status]
|
|
19
19
|
*/
|
|
20
20
|
export declare class ThemeP10k implements PromptTheme {
|
|
21
21
|
render(ctx: PromptContext): string;
|
|
@@ -3,38 +3,57 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Two-line prompt:
|
|
5
5
|
* Line 1 — coloured segment bar with background fills and powerline separators
|
|
6
|
-
*
|
|
6
|
+
* [ pacs ❯] host ❯ user ❯ path ❯ [proc ❯] [ HH:MM ❯] [ Xs ❯] [ N ❯]
|
|
7
7
|
* Line 2 — input line: ❯
|
|
8
8
|
*
|
|
9
|
-
*
|
|
9
|
+
* Font Awesome icons and the powerline separator require a Nerd Font.
|
|
10
10
|
* readline uses only the last line's visible width for cursor and
|
|
11
11
|
* tab-completion alignment, so line 1 never interferes with line editing.
|
|
12
12
|
*
|
|
13
13
|
* @module
|
|
14
14
|
*/
|
|
15
15
|
import chalk from 'chalk';
|
|
16
|
-
import {
|
|
16
|
+
import { procPromptState_get } from '@fnndsc/cumin/proc-prompt';
|
|
17
|
+
import { PROMPT_PALETTE, statusColor_get, } from './palette.js';
|
|
18
|
+
import { ansi_visibleLength, homePath_abbreviate, path_truncate, procProgress_format, } from './utils.js';
|
|
17
19
|
/** Powerline right-arrow separator (Nerd Font U+E0B0). */
|
|
18
20
|
const POWERLINE = '';
|
|
21
|
+
/** Font Awesome cube icon (U+F1B2). */
|
|
22
|
+
const ICON_CUBE = '\uf1b2';
|
|
23
|
+
/** Font Awesome database icon (U+F1C0). */
|
|
24
|
+
const ICON_DATABASE = '\uf1c0';
|
|
25
|
+
/** Font Awesome microscope icon (U+F610). */
|
|
26
|
+
const ICON_MICROSCOPE = '\uf610';
|
|
27
|
+
/** Font Awesome user icon (U+F007). */
|
|
28
|
+
const ICON_USER = '\uf007';
|
|
29
|
+
/** Font Awesome open-folder icon (U+F07C). */
|
|
30
|
+
const ICON_FOLDER = '\uf07c';
|
|
31
|
+
/** Font Awesome clock icon (U+F017). */
|
|
32
|
+
const ICON_CLOCK = '\uf017';
|
|
33
|
+
/** Font Awesome bolt icon (U+F0E7). */
|
|
34
|
+
const ICON_BOLT = '\uf0e7';
|
|
35
|
+
/** Font Awesome circled-x icon (U+F057). */
|
|
36
|
+
const ICON_ERROR = '\uf057';
|
|
37
|
+
/** Font Awesome snowflake icon (U+F2DC). */
|
|
38
|
+
const ICON_SNOWFLAKE = '\uf2dc';
|
|
39
|
+
/** Font Awesome refresh icon (U+F021). */
|
|
40
|
+
const ICON_REFRESH = '\uf021';
|
|
41
|
+
/** Font Awesome warning icon (U+F071). */
|
|
42
|
+
const ICON_WARNING = '\uf071';
|
|
43
|
+
/** Theme-specific presentation for each process-index state. */
|
|
44
|
+
const PROC_STATE_SEGMENTS = {
|
|
45
|
+
cold: { icon: ICON_SNOWFLAKE, label: 'proc cold', color: PROMPT_PALETTE.DURATION },
|
|
46
|
+
cached: { icon: ICON_REFRESH, label: 'proc cached, refreshing', color: PROMPT_PALETTE.TIME },
|
|
47
|
+
failed: { icon: ICON_WARNING, label: 'proc failed', color: PROMPT_PALETTE.STATUS },
|
|
48
|
+
};
|
|
19
49
|
/** Fraction of terminal width the segment bar should not exceed. */
|
|
20
50
|
const FILL_RATIO = 0.95;
|
|
21
51
|
/** Minimum command duration (ms) before the duration segment appears. */
|
|
22
52
|
const DURATION_THRESHOLD_MS = 3_000;
|
|
23
|
-
/** Segment colour palette — bg and fg hex pairs. */
|
|
24
|
-
const C = {
|
|
25
|
-
HOST: { bg: '#005fd7', fg: '#ffffff' },
|
|
26
|
-
PACS: { bg: '#5f5faf', fg: '#ffffff' },
|
|
27
|
-
USER: { bg: '#5f875f', fg: '#ffffff' },
|
|
28
|
-
DIR: { bg: '#d7af00', fg: '#000000' },
|
|
29
|
-
PHYSICAL: { bg: '#af0000', fg: '#ffffff' },
|
|
30
|
-
TIME: { bg: '#3a3a3a', fg: '#bcbcbc' },
|
|
31
|
-
DURATION: { bg: '#875f00', fg: '#ffffff' },
|
|
32
|
-
STATUS: { bg: '#d70000', fg: '#ffffff' },
|
|
33
|
-
};
|
|
34
53
|
/**
|
|
35
54
|
* Renders one segment: padded text on its background colour.
|
|
36
55
|
*
|
|
37
|
-
* @param text - Visible text content (may include
|
|
56
|
+
* @param text - Visible text content (may include a Font Awesome glyph).
|
|
38
57
|
* @param c - Background/foreground hex pair.
|
|
39
58
|
* @returns ANSI-coded segment string.
|
|
40
59
|
*/
|
|
@@ -101,50 +120,67 @@ function time_now() {
|
|
|
101
120
|
}
|
|
102
121
|
/**
|
|
103
122
|
* Powerlevel10k-inspired two-line prompt theme with background-coloured segments.
|
|
104
|
-
* Segment order:
|
|
123
|
+
* Segment order: [pacs] host user dir [proc] [physical] [time] [duration] [status]
|
|
105
124
|
*/
|
|
106
125
|
export class ThemeP10k {
|
|
107
126
|
render(ctx) {
|
|
108
127
|
const host = uri_abbreviate(ctx.uri);
|
|
109
|
-
//
|
|
110
|
-
const fixed = [
|
|
111
|
-
{ text: `🌐 ${host}`, color: C.HOST },
|
|
112
|
-
];
|
|
128
|
+
// Core segments: [pacs] → host → user → dir → [proc]
|
|
129
|
+
const fixed = [];
|
|
113
130
|
if (ctx.pacsserver && ctx.p10kSegments.pacs) {
|
|
114
|
-
fixed.push({ text:
|
|
131
|
+
fixed.push({ text: `${ICON_DATABASE} ${ctx.pacsserver}`, color: PROMPT_PALETTE.PACS });
|
|
115
132
|
}
|
|
133
|
+
fixed.push({ text: `${ICON_CUBE} ${host}`, color: PROMPT_PALETTE.HOST });
|
|
134
|
+
fixed.push({ text: `${ICON_USER} ${ctx.user}`, color: PROMPT_PALETTE.USER });
|
|
135
|
+
// Optional auxiliary state and command telemetry follow the core sequence.
|
|
136
|
+
const trailing = [];
|
|
116
137
|
if (ctx.physicalMode) {
|
|
117
|
-
|
|
138
|
+
trailing.push({ text: `${ICON_MICROSCOPE} PHYSICAL`, color: PROMPT_PALETTE.PHYSICAL });
|
|
118
139
|
}
|
|
119
|
-
fixed.push({ text: `👤 ${ctx.user}`, color: C.USER });
|
|
120
|
-
// Optional trailing segments (after dir)
|
|
121
|
-
const trailing = [];
|
|
122
140
|
if (ctx.p10kSegments.time) {
|
|
123
|
-
trailing.push({ text:
|
|
141
|
+
trailing.push({ text: `${ICON_CLOCK} ${time_now()}`, color: PROMPT_PALETTE.TIME });
|
|
124
142
|
}
|
|
125
143
|
if (ctx.p10kSegments.duration && ctx.lastCommandDurationMs >= DURATION_THRESHOLD_MS) {
|
|
126
|
-
trailing.push({
|
|
144
|
+
trailing.push({
|
|
145
|
+
text: `${ICON_BOLT} ${duration_format(ctx.lastCommandDurationMs)}`,
|
|
146
|
+
color: PROMPT_PALETTE.DURATION,
|
|
147
|
+
});
|
|
127
148
|
}
|
|
128
149
|
if (ctx.p10kSegments.status && ctx.lastExitCode !== 0) {
|
|
129
|
-
trailing.push({ text:
|
|
150
|
+
trailing.push({ text: `${ICON_ERROR} ${ctx.lastExitCode}`, color: PROMPT_PALETTE.STATUS });
|
|
130
151
|
}
|
|
152
|
+
let procSegment;
|
|
131
153
|
if (ctx.procWarmup) {
|
|
132
|
-
|
|
154
|
+
const progress = procProgress_format(ctx.procWarmup.loaded, ctx.procWarmup.total ?? 0);
|
|
155
|
+
const state = procPromptState_get(ctx.procWarmup);
|
|
156
|
+
const presentation = PROC_STATE_SEGMENTS[state];
|
|
157
|
+
procSegment = {
|
|
158
|
+
text: `${presentation.icon} ${presentation.label}: ${progress}`,
|
|
159
|
+
color: presentation.color,
|
|
160
|
+
};
|
|
133
161
|
}
|
|
162
|
+
const rightSegments = procSegment
|
|
163
|
+
? [procSegment, ...trailing]
|
|
164
|
+
: trailing;
|
|
134
165
|
// Compute path budget: terminal limit minus fixed + trailing segment overhead + dir overhead
|
|
135
166
|
const limit = Math.floor(ctx.terminalWidth * FILL_RATIO);
|
|
136
|
-
const fixedRendered = fixed
|
|
137
|
-
|
|
167
|
+
const fixedRendered = fixed
|
|
168
|
+
.map((segment) => segment_render(segment.text, segment.color))
|
|
169
|
+
.join('');
|
|
170
|
+
const trailingRendered = rightSegments
|
|
171
|
+
.map((segment) => segment_render(segment.text, segment.color))
|
|
172
|
+
.join('');
|
|
138
173
|
const fixedOverhead = ansi_visibleLength(fixedRendered) + fixed.length;
|
|
139
|
-
const trailingOverhead = ansi_visibleLength(trailingRendered) +
|
|
174
|
+
const trailingOverhead = ansi_visibleLength(trailingRendered) + rightSegments.length;
|
|
140
175
|
// dir: +2 padding, +1 sep before, +1 final sep (or sep to first trailing)
|
|
141
176
|
const dirOverhead = 4;
|
|
142
177
|
const pathBudget = limit - fixedOverhead - trailingOverhead - dirOverhead;
|
|
143
|
-
const
|
|
178
|
+
const displayPath = homePath_abbreviate(ctx.cwd, ctx.user);
|
|
179
|
+
const dirPath = path_truncate(displayPath, Math.max(pathBudget, 4));
|
|
144
180
|
const defs = [
|
|
145
181
|
...fixed,
|
|
146
|
-
{ text:
|
|
147
|
-
...
|
|
182
|
+
{ text: `${ICON_FOLDER} ${dirPath}`, color: PROMPT_PALETTE.DIR },
|
|
183
|
+
...rightSegments,
|
|
148
184
|
];
|
|
149
185
|
let line1 = '';
|
|
150
186
|
for (let i = 0; i < defs.length; i++) {
|
|
@@ -157,7 +193,8 @@ export class ThemeP10k {
|
|
|
157
193
|
line1 += separator_final(def.color);
|
|
158
194
|
}
|
|
159
195
|
}
|
|
160
|
-
const
|
|
196
|
+
const glyphColor = statusColor_get(ctx.lastExitCode);
|
|
197
|
+
const line2 = chalk.hex(glyphColor)('❯') + ' ';
|
|
161
198
|
return `${line1}\n${line2}`;
|
|
162
199
|
}
|
|
163
200
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme_p10k.js","sourceRoot":"","sources":["../../../src/core/prompt/theme_p10k.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"theme_p10k.js","sourceRoot":"","sources":["../../../src/core/prompt/theme_p10k.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,17 @@
|
|
|
9
9
|
* @returns Number of visible columns.
|
|
10
10
|
*/
|
|
11
11
|
export declare function ansi_visibleLength(s: string): number;
|
|
12
|
+
/**
|
|
13
|
+
* Replaces the authenticated user's home-directory prefix with `~`.
|
|
14
|
+
*
|
|
15
|
+
* Other users' home directories and similarly prefixed usernames remain
|
|
16
|
+
* unchanged.
|
|
17
|
+
*
|
|
18
|
+
* @param path - Logical working-directory path.
|
|
19
|
+
* @param user - Authenticated username that owns `/home/<user>`.
|
|
20
|
+
* @returns Home-relative display path, or the original path when outside home.
|
|
21
|
+
*/
|
|
22
|
+
export declare function homePath_abbreviate(path: string, user: string): string;
|
|
12
23
|
/**
|
|
13
24
|
* Truncates a filesystem path to fit within `maxLen` visible columns.
|
|
14
25
|
*
|
|
@@ -21,3 +32,14 @@ export declare function ansi_visibleLength(s: string): number;
|
|
|
21
32
|
* @returns Truncated path string (no ANSI codes).
|
|
22
33
|
*/
|
|
23
34
|
export declare function path_truncate(path: string, maxLen: number): string;
|
|
35
|
+
/**
|
|
36
|
+
* Formats active `/proc` warm-up progress for prompt themes.
|
|
37
|
+
*
|
|
38
|
+
* Active work is capped at 99%; completion removes the prompt segment instead
|
|
39
|
+
* of briefly presenting a misleading 100% while the sweep is still settling.
|
|
40
|
+
*
|
|
41
|
+
* @param loaded - Number of unique plugin instances loaded.
|
|
42
|
+
* @param total - Server-reported visible plugin-instance total.
|
|
43
|
+
* @returns Compact `N/M f%` progress text, or `N/?` before total is known.
|
|
44
|
+
*/
|
|
45
|
+
export declare function procProgress_format(loaded: number, total: number): string;
|