@fnndsc/chell 5.2.3 → 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.
Files changed (37) hide show
  1. package/README.md +102 -15
  2. package/dist/config/settings.js +14 -4
  3. package/dist/config/settings.js.map +1 -1
  4. package/dist/core/boot.js +12 -3
  5. package/dist/core/boot.js.map +1 -1
  6. package/dist/core/cliSurface.js +25 -2
  7. package/dist/core/cliSurface.js.map +1 -1
  8. package/dist/core/progressRenderer.d.ts +13 -0
  9. package/dist/core/progressRenderer.js +44 -0
  10. package/dist/core/progressRenderer.js.map +1 -1
  11. package/dist/core/prompt/index.d.ts +3 -5
  12. package/dist/core/prompt/index.js.map +1 -1
  13. package/dist/core/prompt/palette.d.ts +41 -0
  14. package/dist/core/prompt/palette.js +35 -0
  15. package/dist/core/prompt/palette.js.map +1 -0
  16. package/dist/core/prompt/theme_default.js +27 -10
  17. package/dist/core/prompt/theme_default.js.map +1 -1
  18. package/dist/core/prompt/theme_p10k.d.ts +3 -3
  19. package/dist/core/prompt/theme_p10k.js +73 -36
  20. package/dist/core/prompt/theme_p10k.js.map +1 -1
  21. package/dist/core/prompt/utils.d.ts +11 -0
  22. package/dist/core/prompt/utils.js +18 -0
  23. package/dist/core/prompt/utils.js.map +1 -1
  24. package/dist/core/repl.js +9 -1
  25. package/dist/core/repl.js.map +1 -1
  26. package/dist/core/startupWarmup.d.ts +5 -1
  27. package/dist/core/startupWarmup.js +129 -19
  28. package/dist/core/startupWarmup.js.map +1 -1
  29. package/dist/lib/bootsequence.d.ts +2 -2
  30. package/dist/lib/bootsequence.js +1 -0
  31. package/dist/lib/bootsequence.js.map +1 -1
  32. package/dist/remote/client.js +27 -1
  33. package/dist/remote/client.js.map +1 -1
  34. package/dist/remote/remoteEngine.d.ts +41 -8
  35. package/dist/remote/remoteEngine.js +119 -41
  36. package/dist/remote/remoteEngine.js.map +1 -1
  37. package/package.json +12 -11
@@ -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,11 +44,8 @@ export interface PromptContext {
43
44
  lastExitCode: number;
44
45
  lastCommandDurationMs: number;
45
46
  p10kSegments: P10kSegmentConfig;
46
- /** Present while /proc topology warm-up is in progress. */
47
- procWarmup?: {
48
- loaded: number;
49
- total?: number;
50
- };
47
+ /** Present while /proc indexing is active, reconciling, or has failed. */
48
+ procWarmup?: ProcPromptProgress;
51
49
  }
52
50
  /**
53
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;AAgE5C,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"}
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 { ansi_visibleLength, path_truncate, procProgress_format } from './utils.js';
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 ? chalk.magenta('[PHYSICAL] ') : '';
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 path = path_truncate(ctx.cwd, pathBudget);
33
- const glyph = ctx.lastExitCode !== 0 ? chalk.red('$ ') : chalk.green('$ ');
34
- const warmup = ctx.procWarmup
35
- ? chalk.dim(` [proc: ${procProgress_format(ctx.procWarmup.loaded, ctx.procWarmup.total ?? 0)}]`)
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.green(ctx.user) +
55
+ chalk.hex(PROMPT_PALETTE.USER.bg)(ctx.user) +
39
56
  '@' +
40
- chalk.cyan(ctx.uri) +
57
+ chalk.hex(PROMPT_PALETTE.HOST.bg)(ctx.uri) +
41
58
  ':' +
42
- chalk.yellow(path) +
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;AAE1B,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEpF,0EAA0E;AAC1E,MAAM,UAAU,GAAW,GAAG,CAAC;AAE/B;;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,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEhF,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,IAAI,GAAW,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAExD,MAAM,KAAK,GAAW,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnF,MAAM,MAAM,GAAW,GAAG,CAAC,UAAU;YACnC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC;YAChG,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,CACL,UAAU;YACV,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YACrB,GAAG;YACH,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACnB,GAAG;YACH,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;YAClB,MAAM;YACN,KAAK,CACN,CAAC;IACJ,CAAC;CACF"}
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
- * 🌐 host ❯ [🗄️ pacs ❯] 👤 user ❯ 📂 path ❯ [⏱ HH:MM ❯] [⚡ Xs ❯] [✖ N ❯]
6
+ * [ pacs ❯] host ❯ user ❯ path ❯ [proc ❯] [ HH:MM ❯] [ Xs ❯] [ N ❯]
7
7
  * Line 2 — input line: ❯
8
8
  *
9
- * Powerline separator (U+E0B0) requires a Nerd Font in the terminal.
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: host [pacs] [physical] user dir [time] [duration] [status]
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
- * 🌐 host ❯ [🗄️ pacs ❯] 👤 user ❯ 📂 path ❯ [⏱ HH:MM ❯] [⚡ Xs ❯] [✖ N ❯]
6
+ * [ pacs ❯] host ❯ user ❯ path ❯ [proc ❯] [ HH:MM ❯] [ Xs ❯] [ N ❯]
7
7
  * Line 2 — input line: ❯
8
8
  *
9
- * Powerline separator (U+E0B0) requires a Nerd Font in the terminal.
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 { ansi_visibleLength, path_truncate, procProgress_format } from './utils.js';
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 emoji).
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: host [pacs] [physical] user dir [time] [duration] [status]
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
- // Left segments: host → [pacs] → [physical] → user
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: `🗄️ ${ctx.pacsserver}`, color: C.PACS });
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
- fixed.push({ text: '🔬 PHYSICAL', color: C.PHYSICAL });
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: `⏱ ${time_now()}`, color: C.TIME });
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({ text: `⚡ ${duration_format(ctx.lastCommandDurationMs)}`, color: C.DURATION });
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: `✖ ${ctx.lastExitCode}`, color: C.STATUS });
150
+ trailing.push({ text: `${ICON_ERROR} ${ctx.lastExitCode}`, color: PROMPT_PALETTE.STATUS });
130
151
  }
152
+ let procSegment;
131
153
  if (ctx.procWarmup) {
132
- trailing.push({ text: `⚙ proc: ${procProgress_format(ctx.procWarmup.loaded, ctx.procWarmup.total ?? 0)}`, color: C.TIME });
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.map((s) => segment_render(s.text, s.color)).join('');
137
- const trailingRendered = trailing.map((s) => segment_render(s.text, s.color)).join('');
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) + trailing.length;
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 dirPath = path_truncate(ctx.cwd, Math.max(pathBudget, 4));
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: `📂 ${dirPath}`, color: C.DIR },
147
- ...trailing,
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 line2 = (ctx.lastExitCode !== 0 ? chalk.red('❯') : chalk.green('❯')) + ' ';
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":"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"}
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
  *
@@ -11,6 +11,24 @@
11
11
  export function ansi_visibleLength(s) {
12
12
  return s.replace(/\x1b\[[0-9;]*m/g, '').length;
13
13
  }
14
+ /**
15
+ * Replaces the authenticated user's home-directory prefix with `~`.
16
+ *
17
+ * Other users' home directories and similarly prefixed usernames remain
18
+ * unchanged.
19
+ *
20
+ * @param path - Logical working-directory path.
21
+ * @param user - Authenticated username that owns `/home/<user>`.
22
+ * @returns Home-relative display path, or the original path when outside home.
23
+ */
24
+ export function homePath_abbreviate(path, user) {
25
+ if (!user)
26
+ return path;
27
+ const home = `/home/${user}`;
28
+ if (path === home || path === `${home}/`)
29
+ return '~';
30
+ return path.startsWith(`${home}/`) ? `~${path.slice(home.length)}` : path;
31
+ }
14
32
  /**
15
33
  * Truncates a filesystem path to fit within `maxLen` visible columns.
16
34
  *
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/core/prompt/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,CAAS;IAC1C,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;AACjD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,MAAc;IACxD,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9B,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,QAAQ,GAAa,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE3D,KAAK,IAAI,IAAI,GAAW,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAW,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClE,IAAI,SAAS,CAAC,MAAM,IAAI,MAAM;YAAE,OAAO,SAAS,CAAC;IACnD,CAAC;IAED,MAAM,IAAI,GAAW,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;IAC3D,MAAM,MAAM,GAAW,MAAM,GAAG,CAAC,CAAC;IAClC,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,KAAa;IAC/D,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,GAAG,MAAM,IAAI,CAAC;IACrC,MAAM,OAAO,GAAW,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACzE,OAAO,GAAG,MAAM,IAAI,KAAK,IAAI,OAAO,GAAG,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/core/prompt/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,CAAS;IAC1C,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;AACjD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,IAAY;IAC5D,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,IAAI,GAAW,SAAS,IAAI,EAAE,CAAC;IACrC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IACrD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5E,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,MAAc;IACxD,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9B,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,QAAQ,GAAa,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE3D,KAAK,IAAI,IAAI,GAAW,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAW,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClE,IAAI,SAAS,CAAC,MAAM,IAAI,MAAM;YAAE,OAAO,SAAS,CAAC;IACnD,CAAC;IAED,MAAM,IAAI,GAAW,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;IAC3D,MAAM,MAAM,GAAW,MAAM,GAAG,CAAC,CAAC;IAClC,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,KAAa;IAC/D,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,GAAG,MAAM,IAAI,CAAC;IACrC,MAAM,OAAO,GAAW,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACzE,OAAO,GAAG,MAAM,IAAI,KAAK,IAAI,OAAO,GAAG,CAAC;AAC1C,CAAC"}
package/dist/core/repl.js CHANGED
@@ -43,6 +43,9 @@ export class REPL {
43
43
  completer: (line, callback) => {
44
44
  this.engine.line_complete(line)
45
45
  .then((result) => callback(null, [result.candidates, result.prefix]))
46
+ // Deliberate absorption, adjudicated 2026-08: a completion failure
47
+ // degrades to no candidates; surfacing it would corrupt the
48
+ // readline display mid-keystroke.
46
49
  .catch(() => callback(null, [[], line]));
47
50
  },
48
51
  });
@@ -80,8 +83,13 @@ export class REPL {
80
83
  }
81
84
  });
82
85
  this.rl.on('SIGINT', () => {
83
- // Ctrl+C cancels the current input line and re-prompts — does not exit.
86
+ // A cancellable foreground command (currently recursive scans) gets the
87
+ // interrupt first. Otherwise Ctrl+C retains readline's usual behavior:
88
+ // clear an unfinished input line and redraw the prompt.
84
89
  process.stdout.write('\n');
90
+ if (this.engine.line_cancel?.()) {
91
+ return;
92
+ }
85
93
  readline.clearLine(process.stdout, 0);
86
94
  this.prompt_update();
87
95
  });
@@ -1 +1 @@
1
- {"version":3,"file":"repl.js","sourceRoot":"","sources":["../../src/core/repl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repl.js","sourceRoot":"","sources":["../../src/core/repl.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,10 @@ export interface StartupWarmupCache {
29
29
  export interface StartupWarmupReporter {
30
30
  log(status: BootStatus, label: string, message: string): void;
31
31
  }
32
+ /** Operator choice after a daemon exhausts its startup retries. */
33
+ export type DaemonWarmupFailureDecision = 'continue' | 'exit';
34
+ /** Injectable operator-decision seam for daemon warm-up failures. */
35
+ export type DaemonWarmupRecovery = (failures: string[]) => Promise<DaemonWarmupFailureDecision>;
32
36
  /**
33
37
  * Warms startup caches and begins non-blocking job-topology warming.
34
38
  *
@@ -50,4 +54,4 @@ export declare function startupWarmup_run(flags: StartupWarmupFlags, user: strin
50
54
  * @param interactive - Whether progress may use an interactive spinner.
51
55
  * @param reporter - Daemon boot status logger.
52
56
  */
53
- export declare function daemonSession_run(engine: BrasaEngine, user: string | undefined, flags: StartupWarmupFlags, interactive: boolean, reporter: StartupWarmupReporter): Promise<void>;
57
+ export declare function daemonSession_run(engine: BrasaEngine, user: string | undefined, flags: StartupWarmupFlags, interactive: boolean, reporter: StartupWarmupReporter, recovery?: DaemonWarmupRecovery): Promise<void>;