@fnndsc/chell 4.2.8
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/LICENSE +21 -0
- package/README.md +325 -0
- package/dist/builtins/debug.d.ts +6 -0
- package/dist/builtins/debug.js +47 -0
- package/dist/builtins/debug.js.map +1 -0
- package/dist/builtins/executable.d.ts +22 -0
- package/dist/builtins/executable.js +115 -0
- package/dist/builtins/executable.js.map +1 -0
- package/dist/builtins/fs/cat.d.ts +16 -0
- package/dist/builtins/fs/cat.js +249 -0
- package/dist/builtins/fs/cat.js.map +1 -0
- package/dist/builtins/fs/cd.d.ts +41 -0
- package/dist/builtins/fs/cd.js +178 -0
- package/dist/builtins/fs/cd.js.map +1 -0
- package/dist/builtins/fs/cp.d.ts +7 -0
- package/dist/builtins/fs/cp.js +73 -0
- package/dist/builtins/fs/cp.js.map +1 -0
- package/dist/builtins/fs/download.d.ts +6 -0
- package/dist/builtins/fs/download.js +41 -0
- package/dist/builtins/fs/download.js.map +1 -0
- package/dist/builtins/fs/du.d.ts +58 -0
- package/dist/builtins/fs/du.js +210 -0
- package/dist/builtins/fs/du.js.map +1 -0
- package/dist/builtins/fs/edit.d.ts +7 -0
- package/dist/builtins/fs/edit.js +86 -0
- package/dist/builtins/fs/edit.js.map +1 -0
- package/dist/builtins/fs/ls.d.ts +8 -0
- package/dist/builtins/fs/ls.js +68 -0
- package/dist/builtins/fs/ls.js.map +1 -0
- package/dist/builtins/fs/mkdir.d.ts +6 -0
- package/dist/builtins/fs/mkdir.js +38 -0
- package/dist/builtins/fs/mkdir.js.map +1 -0
- package/dist/builtins/fs/mv.d.ts +7 -0
- package/dist/builtins/fs/mv.js +75 -0
- package/dist/builtins/fs/mv.js.map +1 -0
- package/dist/builtins/fs/pull.args.d.ts +22 -0
- package/dist/builtins/fs/pull.args.js +30 -0
- package/dist/builtins/fs/pull.args.js.map +1 -0
- package/dist/builtins/fs/pull.d.ts +26 -0
- package/dist/builtins/fs/pull.js +413 -0
- package/dist/builtins/fs/pull.js.map +1 -0
- package/dist/builtins/fs/pwd.d.ts +7 -0
- package/dist/builtins/fs/pwd.js +75 -0
- package/dist/builtins/fs/pwd.js.map +1 -0
- package/dist/builtins/fs/rm.d.ts +31 -0
- package/dist/builtins/fs/rm.js +148 -0
- package/dist/builtins/fs/rm.js.map +1 -0
- package/dist/builtins/fs/touch.d.ts +6 -0
- package/dist/builtins/fs/touch.js +64 -0
- package/dist/builtins/fs/touch.js.map +1 -0
- package/dist/builtins/fs/tree.d.ts +15 -0
- package/dist/builtins/fs/tree.js +84 -0
- package/dist/builtins/fs/tree.js.map +1 -0
- package/dist/builtins/fs/upload.d.ts +6 -0
- package/dist/builtins/fs/upload.js +45 -0
- package/dist/builtins/fs/upload.js.map +1 -0
- package/dist/builtins/help.d.ts +74 -0
- package/dist/builtins/help.js +1217 -0
- package/dist/builtins/help.js.map +1 -0
- package/dist/builtins/index.d.ts +45 -0
- package/dist/builtins/index.js +45 -0
- package/dist/builtins/index.js.map +1 -0
- package/dist/builtins/net/connect.d.ts +7 -0
- package/dist/builtins/net/connect.js +42 -0
- package/dist/builtins/net/connect.js.map +1 -0
- package/dist/builtins/net/cubepath.d.ts +18 -0
- package/dist/builtins/net/cubepath.js +102 -0
- package/dist/builtins/net/cubepath.js.map +1 -0
- package/dist/builtins/net/logout.d.ts +6 -0
- package/dist/builtins/net/logout.js +24 -0
- package/dist/builtins/net/logout.js.map +1 -0
- package/dist/builtins/net/pacs.d.ts +24 -0
- package/dist/builtins/net/pacs.js +121 -0
- package/dist/builtins/net/pacs.js.map +1 -0
- package/dist/builtins/net/pacsUtils.d.ts +85 -0
- package/dist/builtins/net/pacsUtils.js +184 -0
- package/dist/builtins/net/pacsUtils.js.map +1 -0
- package/dist/builtins/net/query.d.ts +60 -0
- package/dist/builtins/net/query.js +304 -0
- package/dist/builtins/net/query.js.map +1 -0
- package/dist/builtins/parametersofplugin.d.ts +13 -0
- package/dist/builtins/parametersofplugin.js +43 -0
- package/dist/builtins/parametersofplugin.js.map +1 -0
- package/dist/builtins/pluginExecute.d.ts +27 -0
- package/dist/builtins/pluginExecute.js +165 -0
- package/dist/builtins/pluginExecute.js.map +1 -0
- package/dist/builtins/proc.d.ts +6 -0
- package/dist/builtins/proc.helpers.d.ts +68 -0
- package/dist/builtins/proc.helpers.js +102 -0
- package/dist/builtins/proc.helpers.js.map +1 -0
- package/dist/builtins/proc.js +289 -0
- package/dist/builtins/proc.js.map +1 -0
- package/dist/builtins/res/compute.d.ts +6 -0
- package/dist/builtins/res/compute.js +55 -0
- package/dist/builtins/res/compute.js.map +1 -0
- package/dist/builtins/res/feed.d.ts +6 -0
- package/dist/builtins/res/feed.js +244 -0
- package/dist/builtins/res/feed.js.map +1 -0
- package/dist/builtins/res/feed.notes.d.ts +28 -0
- package/dist/builtins/res/feed.notes.js +24 -0
- package/dist/builtins/res/feed.notes.js.map +1 -0
- package/dist/builtins/res/files.d.ts +18 -0
- package/dist/builtins/res/files.js +85 -0
- package/dist/builtins/res/files.js.map +1 -0
- package/dist/builtins/res/group.d.ts +6 -0
- package/dist/builtins/res/group.js +54 -0
- package/dist/builtins/res/group.js.map +1 -0
- package/dist/builtins/res/pipeline.args.d.ts +22 -0
- package/dist/builtins/res/pipeline.args.js +28 -0
- package/dist/builtins/res/pipeline.args.js.map +1 -0
- package/dist/builtins/res/pipeline.d.ts +20 -0
- package/dist/builtins/res/pipeline.js +252 -0
- package/dist/builtins/res/pipeline.js.map +1 -0
- package/dist/builtins/res/plugin.d.ts +13 -0
- package/dist/builtins/res/plugin.js +140 -0
- package/dist/builtins/res/plugin.js.map +1 -0
- package/dist/builtins/res/plugininstance.d.ts +6 -0
- package/dist/builtins/res/plugininstance.js +53 -0
- package/dist/builtins/res/plugininstance.js.map +1 -0
- package/dist/builtins/res/pluginmeta.d.ts +6 -0
- package/dist/builtins/res/pluginmeta.js +53 -0
- package/dist/builtins/res/pluginmeta.js.map +1 -0
- package/dist/builtins/res/tag.d.ts +6 -0
- package/dist/builtins/res/tag.js +53 -0
- package/dist/builtins/res/tag.js.map +1 -0
- package/dist/builtins/res/workflow.d.ts +6 -0
- package/dist/builtins/res/workflow.js +53 -0
- package/dist/builtins/res/workflow.js.map +1 -0
- package/dist/builtins/store.d.ts +6 -0
- package/dist/builtins/store.js +108 -0
- package/dist/builtins/store.js.map +1 -0
- package/dist/builtins/sys/context.d.ts +6 -0
- package/dist/builtins/sys/context.js +50 -0
- package/dist/builtins/sys/context.js.map +1 -0
- package/dist/builtins/sys/physicalmode.d.ts +6 -0
- package/dist/builtins/sys/physicalmode.js +41 -0
- package/dist/builtins/sys/physicalmode.js.map +1 -0
- package/dist/builtins/sys/prompt.d.ts +13 -0
- package/dist/builtins/sys/prompt.helpers.d.ts +31 -0
- package/dist/builtins/sys/prompt.helpers.js +36 -0
- package/dist/builtins/sys/prompt.helpers.js.map +1 -0
- package/dist/builtins/sys/prompt.js +182 -0
- package/dist/builtins/sys/prompt.js.map +1 -0
- package/dist/builtins/sys/timing.d.ts +6 -0
- package/dist/builtins/sys/timing.js +41 -0
- package/dist/builtins/sys/timing.js.map +1 -0
- package/dist/builtins/sys/whoami.d.ts +12 -0
- package/dist/builtins/sys/whoami.js +37 -0
- package/dist/builtins/sys/whoami.js.map +1 -0
- package/dist/builtins/utils.d.ts +55 -0
- package/dist/builtins/utils.js +145 -0
- package/dist/builtins/utils.js.map +1 -0
- package/dist/builtins/wildcard.d.ts +26 -0
- package/dist/builtins/wildcard.js +120 -0
- package/dist/builtins/wildcard.js.map +1 -0
- package/dist/chell.d.ts +16 -0
- package/dist/chell.js +1193 -0
- package/dist/chell.js.map +1 -0
- package/dist/command-keys.d.ts +8 -0
- package/dist/command-keys.js +32 -0
- package/dist/command-keys.js.map +1 -0
- package/dist/config/settings.d.ts +39 -0
- package/dist/config/settings.js +93 -0
- package/dist/config/settings.js.map +1 -0
- package/dist/core/bootFlags.d.ts +32 -0
- package/dist/core/bootFlags.js +25 -0
- package/dist/core/bootFlags.js.map +1 -0
- package/dist/core/cli.d.ts +58 -0
- package/dist/core/cli.js +251 -0
- package/dist/core/cli.js.map +1 -0
- package/dist/core/prompt/index.d.ts +80 -0
- package/dist/core/prompt/index.js +29 -0
- package/dist/core/prompt/index.js.map +1 -0
- package/dist/core/prompt/theme_default.d.ts +19 -0
- package/dist/core/prompt/theme_default.js +47 -0
- package/dist/core/prompt/theme_default.js.map +1 -0
- package/dist/core/prompt/theme_p10k.d.ts +22 -0
- package/dist/core/prompt/theme_p10k.js +164 -0
- package/dist/core/prompt/theme_p10k.js.map +1 -0
- package/dist/core/prompt/utils.d.ts +23 -0
- package/dist/core/prompt/utils.js +40 -0
- package/dist/core/prompt/utils.js.map +1 -0
- package/dist/core/question.d.ts +34 -0
- package/dist/core/question.js +76 -0
- package/dist/core/question.js.map +1 -0
- package/dist/core/repl.d.ts +31 -0
- package/dist/core/repl.js +146 -0
- package/dist/core/repl.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/bootsequence.d.ts +62 -0
- package/dist/lib/bootsequence.js +222 -0
- package/dist/lib/bootsequence.js.map +1 -0
- package/dist/lib/completer/index.d.ts +15 -0
- package/dist/lib/completer/index.js +212 -0
- package/dist/lib/completer/index.js.map +1 -0
- package/dist/lib/completer/pathComplete.helpers.d.ts +22 -0
- package/dist/lib/completer/pathComplete.helpers.js +49 -0
- package/dist/lib/completer/pathComplete.helpers.js.map +1 -0
- package/dist/lib/logo.d.ts +47 -0
- package/dist/lib/logo.js +313 -0
- package/dist/lib/logo.js.map +1 -0
- package/dist/lib/parser.d.ts +13 -0
- package/dist/lib/parser.js +52 -0
- package/dist/lib/parser.js.map +1 -0
- package/dist/lib/pipe.d.ts +11 -0
- package/dist/lib/pipe.js +90 -0
- package/dist/lib/pipe.js.map +1 -0
- package/dist/lib/prefetch.d.ts +25 -0
- package/dist/lib/prefetch.js +64 -0
- package/dist/lib/prefetch.js.map +1 -0
- package/dist/lib/semicolonParser.d.ts +22 -0
- package/dist/lib/semicolonParser.js +53 -0
- package/dist/lib/semicolonParser.js.map +1 -0
- package/dist/lib/spinner.d.ts +23 -0
- package/dist/lib/spinner.js +68 -0
- package/dist/lib/spinner.js.map +1 -0
- package/dist/lib/vfs/providers/static.d.ts +65 -0
- package/dist/lib/vfs/providers/static.js +164 -0
- package/dist/lib/vfs/providers/static.js.map +1 -0
- package/dist/lib/vfs/providers/static_content.d.ts +27 -0
- package/dist/lib/vfs/providers/static_content.js +180 -0
- package/dist/lib/vfs/providers/static_content.js.map +1 -0
- package/dist/lib/vfs/vfs.d.ts +59 -0
- package/dist/lib/vfs/vfs.js +198 -0
- package/dist/lib/vfs/vfs.js.map +1 -0
- package/dist/session/index.d.ts +76 -0
- package/dist/session/index.js +120 -0
- package/dist/session/index.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/core/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Prompt theme registry.
|
|
3
|
+
*
|
|
4
|
+
* Defines the PromptContext data bag and PromptTheme interface, and wires
|
|
5
|
+
* named themes to the theme registry used by the REPL.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Which optional p10k segments are enabled.
|
|
11
|
+
*
|
|
12
|
+
* @property pacs - Show PACS server segment (when a server is set in context).
|
|
13
|
+
* @property time - Show current time (HH:MM).
|
|
14
|
+
* @property duration - Show last command duration when ≥3s.
|
|
15
|
+
* @property status - Show last exit code when non-zero.
|
|
16
|
+
*/
|
|
17
|
+
export interface P10kSegmentConfig {
|
|
18
|
+
pacs: boolean;
|
|
19
|
+
time: boolean;
|
|
20
|
+
duration: boolean;
|
|
21
|
+
status: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Data available to every prompt theme at render time.
|
|
25
|
+
*
|
|
26
|
+
* @property user - Authenticated ChRIS username.
|
|
27
|
+
* @property uri - Full CUBE API URL.
|
|
28
|
+
* @property cwd - Current working directory path.
|
|
29
|
+
* @property pacsserver - Active PACS server identifier, or null if unset.
|
|
30
|
+
* @property physicalMode - Whether physical (non-logical) path mode is active.
|
|
31
|
+
* @property terminalWidth - Current terminal column count.
|
|
32
|
+
* @property lastExitCode - Exit code of the last command (0 = success).
|
|
33
|
+
* @property lastCommandDurationMs - Wall-clock duration of the last command in ms.
|
|
34
|
+
* @property p10kSegments - Which optional p10k segments are enabled.
|
|
35
|
+
*/
|
|
36
|
+
export interface PromptContext {
|
|
37
|
+
user: string;
|
|
38
|
+
uri: string;
|
|
39
|
+
cwd: string;
|
|
40
|
+
pacsserver: string | null;
|
|
41
|
+
physicalMode: boolean;
|
|
42
|
+
terminalWidth: number;
|
|
43
|
+
lastExitCode: number;
|
|
44
|
+
lastCommandDurationMs: number;
|
|
45
|
+
p10kSegments: P10kSegmentConfig;
|
|
46
|
+
/** Present while /proc topology warm-up is in progress. total is always 0 (unknown). */
|
|
47
|
+
procWarmup?: {
|
|
48
|
+
loaded: number;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Contract every prompt theme must satisfy.
|
|
53
|
+
*/
|
|
54
|
+
export interface PromptTheme {
|
|
55
|
+
/**
|
|
56
|
+
* Renders the full prompt string passed to readline.setPrompt().
|
|
57
|
+
* May contain a single `\n` to produce a two-line prompt; readline
|
|
58
|
+
* uses only the last line's visible width for cursor positioning.
|
|
59
|
+
*
|
|
60
|
+
* @param ctx - Current prompt context.
|
|
61
|
+
* @returns Prompt string (ANSI codes allowed).
|
|
62
|
+
*/
|
|
63
|
+
render(ctx: PromptContext): string;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Available prompt theme names.
|
|
67
|
+
*/
|
|
68
|
+
export type ThemeName = 'default' | 'p10k';
|
|
69
|
+
/** All registered theme names, in the order they appear in the registry. */
|
|
70
|
+
export declare const THEME_NAMES: readonly ThemeName[];
|
|
71
|
+
/** Names of optional p10k segments the user can toggle. */
|
|
72
|
+
export declare const P10K_OPTIONAL_SEGMENTS: readonly (keyof P10kSegmentConfig)[];
|
|
73
|
+
/**
|
|
74
|
+
* Renders the prompt using the named theme.
|
|
75
|
+
*
|
|
76
|
+
* @param theme - Theme identifier; falls back to 'default' if unknown.
|
|
77
|
+
* @param ctx - Current prompt context.
|
|
78
|
+
* @returns Prompt string ready for readline.setPrompt().
|
|
79
|
+
*/
|
|
80
|
+
export declare function prompt_render(theme: ThemeName, ctx: PromptContext): string;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Prompt theme registry.
|
|
3
|
+
*
|
|
4
|
+
* Defines the PromptContext data bag and PromptTheme interface, and wires
|
|
5
|
+
* named themes to the theme registry used by the REPL.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { ThemeDefault } from './theme_default.js';
|
|
10
|
+
import { ThemeP10k } from './theme_p10k.js';
|
|
11
|
+
/** All registered theme names, in the order they appear in the registry. */
|
|
12
|
+
export const THEME_NAMES = ['default', 'p10k'];
|
|
13
|
+
/** Names of optional p10k segments the user can toggle. */
|
|
14
|
+
export const P10K_OPTIONAL_SEGMENTS = ['pacs', 'time', 'duration', 'status'];
|
|
15
|
+
const registry = {
|
|
16
|
+
default: new ThemeDefault(),
|
|
17
|
+
p10k: new ThemeP10k(),
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Renders the prompt using the named theme.
|
|
21
|
+
*
|
|
22
|
+
* @param theme - Theme identifier; falls back to 'default' if unknown.
|
|
23
|
+
* @param ctx - Current prompt context.
|
|
24
|
+
* @returns Prompt string ready for readline.setPrompt().
|
|
25
|
+
*/
|
|
26
|
+
export function prompt_render(theme, ctx) {
|
|
27
|
+
return (registry[theme] ?? registry.default).render(ctx);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Default prompt theme.
|
|
3
|
+
*
|
|
4
|
+
* Single-line prompt that fits within 80% of the terminal width.
|
|
5
|
+
* When the path causes overflow the oldest ancestors are dropped and
|
|
6
|
+
* replaced with `...`; if even the leaf alone is too long it is
|
|
7
|
+
* front-truncated to fit.
|
|
8
|
+
*
|
|
9
|
+
* Format: [PHYSICAL] user@uri:path$
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
import type { PromptContext, PromptTheme } from './index.js';
|
|
14
|
+
/**
|
|
15
|
+
* Default single-line prompt theme with smart path truncation.
|
|
16
|
+
*/
|
|
17
|
+
export declare class ThemeDefault implements PromptTheme {
|
|
18
|
+
render(ctx: PromptContext): string;
|
|
19
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Default prompt theme.
|
|
3
|
+
*
|
|
4
|
+
* Single-line prompt that fits within 80% of the terminal width.
|
|
5
|
+
* When the path causes overflow the oldest ancestors are dropped and
|
|
6
|
+
* replaced with `...`; if even the leaf alone is too long it is
|
|
7
|
+
* front-truncated to fit.
|
|
8
|
+
*
|
|
9
|
+
* Format: [PHYSICAL] user@uri:path$
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
import chalk from 'chalk';
|
|
14
|
+
import { ansi_visibleLength, path_truncate } from './utils.js';
|
|
15
|
+
/** Fraction of terminal width allowed before path truncation kicks in. */
|
|
16
|
+
const FILL_RATIO = 0.8;
|
|
17
|
+
/**
|
|
18
|
+
* Default single-line prompt theme with smart path truncation.
|
|
19
|
+
*/
|
|
20
|
+
export class ThemeDefault {
|
|
21
|
+
render(ctx) {
|
|
22
|
+
const limit = Math.floor(ctx.terminalWidth * FILL_RATIO);
|
|
23
|
+
const modePrefix = ctx.physicalMode ? chalk.magenta('[PHYSICAL] ') : '';
|
|
24
|
+
// Compute fixed visible length: modePrefix + user + '@' + uri + ':' + '$ '
|
|
25
|
+
const fixedVisible = ansi_visibleLength(modePrefix) +
|
|
26
|
+
ctx.user.length +
|
|
27
|
+
1 + // '@'
|
|
28
|
+
ctx.uri.length +
|
|
29
|
+
1 + // ':'
|
|
30
|
+
2; // '$ '
|
|
31
|
+
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: ${ctx.procWarmup.loaded}]`)
|
|
36
|
+
: '';
|
|
37
|
+
return (modePrefix +
|
|
38
|
+
chalk.green(ctx.user) +
|
|
39
|
+
'@' +
|
|
40
|
+
chalk.cyan(ctx.uri) +
|
|
41
|
+
':' +
|
|
42
|
+
chalk.yellow(path) +
|
|
43
|
+
warmup +
|
|
44
|
+
glyph);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=theme_default.js.map
|
|
@@ -0,0 +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,MAAM,YAAY,CAAC;AAE/D,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,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAChD,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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Powerlevel10k-inspired prompt theme.
|
|
3
|
+
*
|
|
4
|
+
* Two-line prompt:
|
|
5
|
+
* Line 1 — coloured segment bar with background fills and powerline separators
|
|
6
|
+
* 🌐 host ❯ [🗄️ pacs ❯] 👤 user ❯ 📂 path ❯ [⏱ HH:MM ❯] [⚡ Xs ❯] [✖ N ❯]
|
|
7
|
+
* Line 2 — input line: ❯
|
|
8
|
+
*
|
|
9
|
+
* Powerline separator (U+E0B0) requires a Nerd Font in the terminal.
|
|
10
|
+
* readline uses only the last line's visible width for cursor and
|
|
11
|
+
* tab-completion alignment, so line 1 never interferes with line editing.
|
|
12
|
+
*
|
|
13
|
+
* @module
|
|
14
|
+
*/
|
|
15
|
+
import type { PromptContext, PromptTheme } from './index.js';
|
|
16
|
+
/**
|
|
17
|
+
* Powerlevel10k-inspired two-line prompt theme with background-coloured segments.
|
|
18
|
+
* Segment order: host [pacs] [physical] user dir [time] [duration] [status]
|
|
19
|
+
*/
|
|
20
|
+
export declare class ThemeP10k implements PromptTheme {
|
|
21
|
+
render(ctx: PromptContext): string;
|
|
22
|
+
}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Powerlevel10k-inspired prompt theme.
|
|
3
|
+
*
|
|
4
|
+
* Two-line prompt:
|
|
5
|
+
* Line 1 — coloured segment bar with background fills and powerline separators
|
|
6
|
+
* 🌐 host ❯ [🗄️ pacs ❯] 👤 user ❯ 📂 path ❯ [⏱ HH:MM ❯] [⚡ Xs ❯] [✖ N ❯]
|
|
7
|
+
* Line 2 — input line: ❯
|
|
8
|
+
*
|
|
9
|
+
* Powerline separator (U+E0B0) requires a Nerd Font in the terminal.
|
|
10
|
+
* readline uses only the last line's visible width for cursor and
|
|
11
|
+
* tab-completion alignment, so line 1 never interferes with line editing.
|
|
12
|
+
*
|
|
13
|
+
* @module
|
|
14
|
+
*/
|
|
15
|
+
import chalk from 'chalk';
|
|
16
|
+
import { ansi_visibleLength, path_truncate } from './utils.js';
|
|
17
|
+
/** Powerline right-arrow separator (Nerd Font U+E0B0). */
|
|
18
|
+
const POWERLINE = '';
|
|
19
|
+
/** Fraction of terminal width the segment bar should not exceed. */
|
|
20
|
+
const FILL_RATIO = 0.95;
|
|
21
|
+
/** Minimum command duration (ms) before the duration segment appears. */
|
|
22
|
+
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
|
+
/**
|
|
35
|
+
* Renders one segment: padded text on its background colour.
|
|
36
|
+
*
|
|
37
|
+
* @param text - Visible text content (may include emoji).
|
|
38
|
+
* @param c - Background/foreground hex pair.
|
|
39
|
+
* @returns ANSI-coded segment string.
|
|
40
|
+
*/
|
|
41
|
+
function segment_render(text, c) {
|
|
42
|
+
return chalk.hex(c.fg).bgHex(c.bg)(` ${text} `);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Renders the powerline separator transitioning from one segment bg to the next.
|
|
46
|
+
*
|
|
47
|
+
* @param from - Colour pair of the departing segment.
|
|
48
|
+
* @param to - Colour pair of the arriving segment.
|
|
49
|
+
* @returns ANSI-coded separator character.
|
|
50
|
+
*/
|
|
51
|
+
function separator_render(from, to) {
|
|
52
|
+
return chalk.hex(from.bg).bgHex(to.bg)(POWERLINE);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Renders the final powerline separator: segment bg fading to terminal default.
|
|
56
|
+
*
|
|
57
|
+
* @param from - Colour pair of the last segment.
|
|
58
|
+
* @returns ANSI-coded trailing separator character.
|
|
59
|
+
*/
|
|
60
|
+
function separator_final(from) {
|
|
61
|
+
return chalk.hex(from.bg)(POWERLINE);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Strips the scheme and trailing `/api/v1/` from a CUBE URL, leaving
|
|
65
|
+
* just `host:port`.
|
|
66
|
+
*
|
|
67
|
+
* @param uri - Full CUBE API URL string.
|
|
68
|
+
* @returns Abbreviated host[:port] string.
|
|
69
|
+
*/
|
|
70
|
+
function uri_abbreviate(uri) {
|
|
71
|
+
return uri
|
|
72
|
+
.replace(/^https?:\/\//, '')
|
|
73
|
+
.replace(/\/api\/v1\/?$/, '');
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Formats a duration in milliseconds as a human-readable string.
|
|
77
|
+
* Examples: "2s", "1m 5s"
|
|
78
|
+
*
|
|
79
|
+
* @param ms - Duration in milliseconds.
|
|
80
|
+
* @returns Formatted duration string.
|
|
81
|
+
*/
|
|
82
|
+
function duration_format(ms) {
|
|
83
|
+
const totalSeconds = Math.floor(ms / 1000);
|
|
84
|
+
const minutes = Math.floor(totalSeconds / 60);
|
|
85
|
+
const seconds = totalSeconds % 60;
|
|
86
|
+
if (minutes > 0) {
|
|
87
|
+
return `${minutes}m ${seconds}s`;
|
|
88
|
+
}
|
|
89
|
+
return `${totalSeconds}s`;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Returns the current time as HH:MM (24-hour).
|
|
93
|
+
*
|
|
94
|
+
* @returns Time string in HH:MM format.
|
|
95
|
+
*/
|
|
96
|
+
function time_now() {
|
|
97
|
+
const now = new Date();
|
|
98
|
+
const hh = String(now.getHours()).padStart(2, '0');
|
|
99
|
+
const mm = String(now.getMinutes()).padStart(2, '0');
|
|
100
|
+
return `${hh}:${mm}`;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Powerlevel10k-inspired two-line prompt theme with background-coloured segments.
|
|
104
|
+
* Segment order: host [pacs] [physical] user dir [time] [duration] [status]
|
|
105
|
+
*/
|
|
106
|
+
export class ThemeP10k {
|
|
107
|
+
render(ctx) {
|
|
108
|
+
const host = uri_abbreviate(ctx.uri);
|
|
109
|
+
// Left segments: host → [pacs] → [physical] → user
|
|
110
|
+
const fixed = [
|
|
111
|
+
{ text: `🌐 ${host}`, color: C.HOST },
|
|
112
|
+
];
|
|
113
|
+
if (ctx.pacsserver && ctx.p10kSegments.pacs) {
|
|
114
|
+
fixed.push({ text: `🗄️ ${ctx.pacsserver}`, color: C.PACS });
|
|
115
|
+
}
|
|
116
|
+
if (ctx.physicalMode) {
|
|
117
|
+
fixed.push({ text: '🔬 PHYSICAL', color: C.PHYSICAL });
|
|
118
|
+
}
|
|
119
|
+
fixed.push({ text: `👤 ${ctx.user}`, color: C.USER });
|
|
120
|
+
// Optional trailing segments (after dir)
|
|
121
|
+
const trailing = [];
|
|
122
|
+
if (ctx.p10kSegments.time) {
|
|
123
|
+
trailing.push({ text: `⏱ ${time_now()}`, color: C.TIME });
|
|
124
|
+
}
|
|
125
|
+
if (ctx.p10kSegments.duration && ctx.lastCommandDurationMs >= DURATION_THRESHOLD_MS) {
|
|
126
|
+
trailing.push({ text: `⚡ ${duration_format(ctx.lastCommandDurationMs)}`, color: C.DURATION });
|
|
127
|
+
}
|
|
128
|
+
if (ctx.p10kSegments.status && ctx.lastExitCode !== 0) {
|
|
129
|
+
trailing.push({ text: `✖ ${ctx.lastExitCode}`, color: C.STATUS });
|
|
130
|
+
}
|
|
131
|
+
if (ctx.procWarmup) {
|
|
132
|
+
trailing.push({ text: `⚙ proc: ${ctx.procWarmup.loaded}`, color: C.TIME });
|
|
133
|
+
}
|
|
134
|
+
// Compute path budget: terminal limit minus fixed + trailing segment overhead + dir overhead
|
|
135
|
+
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('');
|
|
138
|
+
const fixedOverhead = ansi_visibleLength(fixedRendered) + fixed.length;
|
|
139
|
+
const trailingOverhead = ansi_visibleLength(trailingRendered) + trailing.length;
|
|
140
|
+
// dir: +2 padding, +1 sep before, +1 final sep (or sep to first trailing)
|
|
141
|
+
const dirOverhead = 4;
|
|
142
|
+
const pathBudget = limit - fixedOverhead - trailingOverhead - dirOverhead;
|
|
143
|
+
const dirPath = path_truncate(ctx.cwd, Math.max(pathBudget, 4));
|
|
144
|
+
const defs = [
|
|
145
|
+
...fixed,
|
|
146
|
+
{ text: `📂 ${dirPath}`, color: C.DIR },
|
|
147
|
+
...trailing,
|
|
148
|
+
];
|
|
149
|
+
let line1 = '';
|
|
150
|
+
for (let i = 0; i < defs.length; i++) {
|
|
151
|
+
const def = defs[i];
|
|
152
|
+
line1 += segment_render(def.text, def.color);
|
|
153
|
+
if (i < defs.length - 1) {
|
|
154
|
+
line1 += separator_render(def.color, defs[i + 1].color);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
line1 += separator_final(def.color);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
const line2 = (ctx.lastExitCode !== 0 ? chalk.red('❯') : chalk.green('❯')) + ' ';
|
|
161
|
+
return `${line1}\n${line2}`;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=theme_p10k.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme_p10k.js","sourceRoot":"","sources":["../../../src/core/prompt/theme_p10k.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Shared prompt rendering utilities.
|
|
3
|
+
* @module
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Returns the visible (non-ANSI) length of a string.
|
|
7
|
+
*
|
|
8
|
+
* @param s - String possibly containing ANSI escape codes.
|
|
9
|
+
* @returns Number of visible columns.
|
|
10
|
+
*/
|
|
11
|
+
export declare function ansi_visibleLength(s: string): number;
|
|
12
|
+
/**
|
|
13
|
+
* Truncates a filesystem path to fit within `maxLen` visible columns.
|
|
14
|
+
*
|
|
15
|
+
* Drops leading path segments (oldest ancestors) replacing them with
|
|
16
|
+
* `...`, then — if the leaf alone still exceeds the budget — truncates
|
|
17
|
+
* the leaf itself from the front.
|
|
18
|
+
*
|
|
19
|
+
* @param path - Absolute or relative path string.
|
|
20
|
+
* @param maxLen - Maximum number of visible columns allowed.
|
|
21
|
+
* @returns Truncated path string (no ANSI codes).
|
|
22
|
+
*/
|
|
23
|
+
export declare function path_truncate(path: string, maxLen: number): string;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Shared prompt rendering utilities.
|
|
3
|
+
* @module
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Returns the visible (non-ANSI) length of a string.
|
|
7
|
+
*
|
|
8
|
+
* @param s - String possibly containing ANSI escape codes.
|
|
9
|
+
* @returns Number of visible columns.
|
|
10
|
+
*/
|
|
11
|
+
export function ansi_visibleLength(s) {
|
|
12
|
+
return s.replace(/\x1b\[[0-9;]*m/g, '').length;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Truncates a filesystem path to fit within `maxLen` visible columns.
|
|
16
|
+
*
|
|
17
|
+
* Drops leading path segments (oldest ancestors) replacing them with
|
|
18
|
+
* `...`, then — if the leaf alone still exceeds the budget — truncates
|
|
19
|
+
* the leaf itself from the front.
|
|
20
|
+
*
|
|
21
|
+
* @param path - Absolute or relative path string.
|
|
22
|
+
* @param maxLen - Maximum number of visible columns allowed.
|
|
23
|
+
* @returns Truncated path string (no ANSI codes).
|
|
24
|
+
*/
|
|
25
|
+
export function path_truncate(path, maxLen) {
|
|
26
|
+
if (maxLen <= 0)
|
|
27
|
+
return '...';
|
|
28
|
+
if (path.length <= maxLen)
|
|
29
|
+
return path;
|
|
30
|
+
const segments = path.split('/').filter(Boolean);
|
|
31
|
+
for (let drop = 1; drop < segments.length; drop++) {
|
|
32
|
+
const candidate = '.../' + segments.slice(drop).join('/');
|
|
33
|
+
if (candidate.length <= maxLen)
|
|
34
|
+
return candidate;
|
|
35
|
+
}
|
|
36
|
+
const leaf = segments[segments.length - 1] ?? path;
|
|
37
|
+
const budget = maxLen - 3;
|
|
38
|
+
return '...' + leaf.slice(-Math.max(budget, 0));
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Shared question helper for builtins.
|
|
3
|
+
*
|
|
4
|
+
* Provides a single question() function that builtins use for interactive
|
|
5
|
+
* prompts. The active REPL registers its readline interface here so input
|
|
6
|
+
* is routed through one interface only — preventing leaked input when a
|
|
7
|
+
* second readline interface would otherwise consume the same stdin.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Registers the REPL's readline question functions.
|
|
13
|
+
* Called once by REPL.start() before any commands run.
|
|
14
|
+
*
|
|
15
|
+
* @param fn - Wrapper around rl.question() on the active interface.
|
|
16
|
+
* @param hiddenFn - Raw-stdin reader that suppresses echo.
|
|
17
|
+
*/
|
|
18
|
+
export declare function repl_questionRegister(fn: (prompt: string) => Promise<string>, hiddenFn: (prompt: string) => Promise<string>): void;
|
|
19
|
+
/**
|
|
20
|
+
* Asks a question using the active REPL's readline interface so that
|
|
21
|
+
* the answer is not double-consumed by a second interface on the same stdin.
|
|
22
|
+
*
|
|
23
|
+
* @param prompt - The question string to display.
|
|
24
|
+
* @returns The trimmed user answer.
|
|
25
|
+
*/
|
|
26
|
+
export declare function repl_question(prompt: string): Promise<string>;
|
|
27
|
+
/**
|
|
28
|
+
* Asks for a password (no echo) using the REPL's raw-stdin reader.
|
|
29
|
+
* Falls back to a muted readline interface outside the REPL.
|
|
30
|
+
*
|
|
31
|
+
* @param prompt - The prompt string to display.
|
|
32
|
+
* @returns The trimmed password string.
|
|
33
|
+
*/
|
|
34
|
+
export declare function repl_questionHidden(prompt: string): Promise<string>;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Shared question helper for builtins.
|
|
3
|
+
*
|
|
4
|
+
* Provides a single question() function that builtins use for interactive
|
|
5
|
+
* prompts. The active REPL registers its readline interface here so input
|
|
6
|
+
* is routed through one interface only — preventing leaked input when a
|
|
7
|
+
* second readline interface would otherwise consume the same stdin.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import * as readline from 'readline';
|
|
12
|
+
/** Registered by the REPL on startup. */
|
|
13
|
+
let _questionFn = null;
|
|
14
|
+
let _questionHiddenFn = null;
|
|
15
|
+
/**
|
|
16
|
+
* Registers the REPL's readline question functions.
|
|
17
|
+
* Called once by REPL.start() before any commands run.
|
|
18
|
+
*
|
|
19
|
+
* @param fn - Wrapper around rl.question() on the active interface.
|
|
20
|
+
* @param hiddenFn - Raw-stdin reader that suppresses echo.
|
|
21
|
+
*/
|
|
22
|
+
export function repl_questionRegister(fn, hiddenFn) {
|
|
23
|
+
_questionFn = fn;
|
|
24
|
+
_questionHiddenFn = hiddenFn;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Asks a question using the active REPL's readline interface so that
|
|
28
|
+
* the answer is not double-consumed by a second interface on the same stdin.
|
|
29
|
+
*
|
|
30
|
+
* @param prompt - The question string to display.
|
|
31
|
+
* @returns The trimmed user answer.
|
|
32
|
+
*/
|
|
33
|
+
export function repl_question(prompt) {
|
|
34
|
+
if (_questionFn) {
|
|
35
|
+
return _questionFn(prompt);
|
|
36
|
+
}
|
|
37
|
+
// Fallback: one-shot interface (pre-REPL startup / single-shot mode)
|
|
38
|
+
return new Promise((resolve) => {
|
|
39
|
+
const rl = readline.createInterface({
|
|
40
|
+
input: process.stdin,
|
|
41
|
+
output: process.stdout,
|
|
42
|
+
});
|
|
43
|
+
rl.question(prompt, (answer) => { rl.close(); resolve(answer.trim()); });
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Asks for a password (no echo) using the REPL's raw-stdin reader.
|
|
48
|
+
* Falls back to a muted readline interface outside the REPL.
|
|
49
|
+
*
|
|
50
|
+
* @param prompt - The prompt string to display.
|
|
51
|
+
* @returns The trimmed password string.
|
|
52
|
+
*/
|
|
53
|
+
export function repl_questionHidden(prompt) {
|
|
54
|
+
if (_questionHiddenFn) {
|
|
55
|
+
return _questionHiddenFn(prompt);
|
|
56
|
+
}
|
|
57
|
+
// Fallback: muted one-shot readline (used outside the REPL, e.g. chili standalone)
|
|
58
|
+
return new Promise((resolve) => {
|
|
59
|
+
const { Writable } = require('stream');
|
|
60
|
+
const muted = new Writable({
|
|
61
|
+
write(_c, _e, cb) { cb(); }
|
|
62
|
+
});
|
|
63
|
+
const rl = readline.createInterface({
|
|
64
|
+
input: process.stdin,
|
|
65
|
+
output: muted,
|
|
66
|
+
terminal: true,
|
|
67
|
+
});
|
|
68
|
+
process.stdout.write(prompt);
|
|
69
|
+
rl.question('', (answer) => {
|
|
70
|
+
process.stdout.write('\n');
|
|
71
|
+
rl.close();
|
|
72
|
+
resolve(answer.trim());
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=question.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"question.js","sourceRoot":"","sources":["../../src/core/question.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAErC,yCAAyC;AACzC,IAAI,WAAW,GAAiD,IAAI,CAAC;AACrE,IAAI,iBAAiB,GAAiD,IAAI,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,EAAuC,EACvC,QAA6C;IAE7C,WAAW,GAAG,EAAE,CAAC;IACjB,iBAAiB,GAAG,QAAQ,CAAC;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IACD,qEAAqE;IACrE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAiC,EAAE,EAAE;QACvD,MAAM,EAAE,GAAuB,QAAQ,CAAC,eAAe,CAAC;YACtD,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAc,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IACD,mFAAmF;IACnF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAiC,EAAE,EAAE;QACvD,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,CAA4B,CAAC;QAClE,MAAM,KAAK,GAAkC,IAAI,QAAQ,CAAC;YACxD,KAAK,CAAC,EAAW,EAAE,EAAW,EAAE,EAAc,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;SAC1D,CAAC,CAAC;QACH,MAAM,EAAE,GAAuB,QAAQ,CAAC,eAAe,CAAC;YACtD,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAc,EAAE,EAAE;YACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handles the Read-Eval-Print Loop (REPL) interaction.
|
|
3
|
+
*/
|
|
4
|
+
export declare class REPL {
|
|
5
|
+
private rl;
|
|
6
|
+
private isOpen;
|
|
7
|
+
private lastCommandDurationMs;
|
|
8
|
+
private lastExitCode;
|
|
9
|
+
/**
|
|
10
|
+
* Initializes the REPL interface.
|
|
11
|
+
*/
|
|
12
|
+
constructor();
|
|
13
|
+
/**
|
|
14
|
+
* Starts the REPL loop.
|
|
15
|
+
* @param commandHandler - Async function to process each input line.
|
|
16
|
+
*/
|
|
17
|
+
start(commandHandler: (line: string) => Promise<void>): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Updates and redisplays the prompt based on current session state.
|
|
20
|
+
*/
|
|
21
|
+
prompt_update(): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Loads command history from file.
|
|
24
|
+
*/
|
|
25
|
+
private history_load;
|
|
26
|
+
/**
|
|
27
|
+
* Appends a command to the history file.
|
|
28
|
+
* @param line - The command line to append.
|
|
29
|
+
*/
|
|
30
|
+
private history_append;
|
|
31
|
+
}
|