@fnndsc/chell 4.3.2 → 5.0.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 (233) hide show
  1. package/dist/builtins/sys/prompt.js +2 -2
  2. package/dist/builtins/sys/prompt.js.map +1 -1
  3. package/dist/chell.d.ts +2 -1
  4. package/dist/chell.js +2 -1
  5. package/dist/chell.js.map +1 -1
  6. package/dist/config/settings.d.ts +4 -2
  7. package/dist/config/settings.js +7 -2
  8. package/dist/config/settings.js.map +1 -1
  9. package/dist/core/boot.d.ts +3 -1
  10. package/dist/core/boot.js +93 -154
  11. package/dist/core/boot.js.map +1 -1
  12. package/dist/core/cli.d.ts +3 -1
  13. package/dist/core/cli.js +11 -1
  14. package/dist/core/cli.js.map +1 -1
  15. package/dist/core/cliSurface.d.ts +26 -0
  16. package/dist/core/cliSurface.js +152 -0
  17. package/dist/core/cliSurface.js.map +1 -0
  18. package/dist/core/progressRenderer.d.ts +42 -0
  19. package/dist/core/progressRenderer.js +176 -0
  20. package/dist/core/progressRenderer.js.map +1 -0
  21. package/dist/core/prompt/session.d.ts +45 -0
  22. package/dist/core/prompt/session.js +48 -0
  23. package/dist/core/prompt/session.js.map +1 -0
  24. package/dist/core/repl.d.ts +25 -5
  25. package/dist/core/repl.js +58 -45
  26. package/dist/core/repl.js.map +1 -1
  27. package/dist/core/surfaceDispatch.d.ts +21 -0
  28. package/dist/core/surfaceDispatch.js +33 -0
  29. package/dist/core/surfaceDispatch.js.map +1 -0
  30. package/dist/core/warnings.d.ts +14 -0
  31. package/dist/core/warnings.js +25 -0
  32. package/dist/core/warnings.js.map +1 -0
  33. package/dist/index.js +2 -12
  34. package/dist/index.js.map +1 -1
  35. package/dist/remote/client.d.ts +6 -0
  36. package/dist/remote/client.js +71 -0
  37. package/dist/remote/client.js.map +1 -0
  38. package/dist/remote/remoteEngine.d.ts +125 -0
  39. package/dist/remote/remoteEngine.js +286 -0
  40. package/dist/remote/remoteEngine.js.map +1 -0
  41. package/package.json +5 -3
  42. package/dist/builtins/debug.d.ts +0 -6
  43. package/dist/builtins/debug.js +0 -47
  44. package/dist/builtins/debug.js.map +0 -1
  45. package/dist/builtins/executable.d.ts +0 -22
  46. package/dist/builtins/executable.js +0 -115
  47. package/dist/builtins/executable.js.map +0 -1
  48. package/dist/builtins/fs/cat.d.ts +0 -16
  49. package/dist/builtins/fs/cat.js +0 -249
  50. package/dist/builtins/fs/cat.js.map +0 -1
  51. package/dist/builtins/fs/cd.d.ts +0 -41
  52. package/dist/builtins/fs/cd.js +0 -178
  53. package/dist/builtins/fs/cd.js.map +0 -1
  54. package/dist/builtins/fs/cp.d.ts +0 -7
  55. package/dist/builtins/fs/cp.js +0 -73
  56. package/dist/builtins/fs/cp.js.map +0 -1
  57. package/dist/builtins/fs/download.d.ts +0 -6
  58. package/dist/builtins/fs/download.js +0 -41
  59. package/dist/builtins/fs/download.js.map +0 -1
  60. package/dist/builtins/fs/du.d.ts +0 -58
  61. package/dist/builtins/fs/du.js +0 -210
  62. package/dist/builtins/fs/du.js.map +0 -1
  63. package/dist/builtins/fs/edit.d.ts +0 -7
  64. package/dist/builtins/fs/edit.js +0 -86
  65. package/dist/builtins/fs/edit.js.map +0 -1
  66. package/dist/builtins/fs/ls.d.ts +0 -8
  67. package/dist/builtins/fs/ls.js +0 -68
  68. package/dist/builtins/fs/ls.js.map +0 -1
  69. package/dist/builtins/fs/mkdir.d.ts +0 -6
  70. package/dist/builtins/fs/mkdir.js +0 -38
  71. package/dist/builtins/fs/mkdir.js.map +0 -1
  72. package/dist/builtins/fs/mv.d.ts +0 -7
  73. package/dist/builtins/fs/mv.js +0 -75
  74. package/dist/builtins/fs/mv.js.map +0 -1
  75. package/dist/builtins/fs/pull.args.d.ts +0 -22
  76. package/dist/builtins/fs/pull.args.js +0 -30
  77. package/dist/builtins/fs/pull.args.js.map +0 -1
  78. package/dist/builtins/fs/pull.d.ts +0 -26
  79. package/dist/builtins/fs/pull.js +0 -417
  80. package/dist/builtins/fs/pull.js.map +0 -1
  81. package/dist/builtins/fs/pwd.d.ts +0 -7
  82. package/dist/builtins/fs/pwd.js +0 -75
  83. package/dist/builtins/fs/pwd.js.map +0 -1
  84. package/dist/builtins/fs/rm.d.ts +0 -31
  85. package/dist/builtins/fs/rm.js +0 -148
  86. package/dist/builtins/fs/rm.js.map +0 -1
  87. package/dist/builtins/fs/touch.d.ts +0 -6
  88. package/dist/builtins/fs/touch.js +0 -64
  89. package/dist/builtins/fs/touch.js.map +0 -1
  90. package/dist/builtins/fs/tree.d.ts +0 -15
  91. package/dist/builtins/fs/tree.js +0 -84
  92. package/dist/builtins/fs/tree.js.map +0 -1
  93. package/dist/builtins/fs/upload.d.ts +0 -6
  94. package/dist/builtins/fs/upload.js +0 -45
  95. package/dist/builtins/fs/upload.js.map +0 -1
  96. package/dist/builtins/help.d.ts +0 -74
  97. package/dist/builtins/help.js +0 -1217
  98. package/dist/builtins/help.js.map +0 -1
  99. package/dist/builtins/index.d.ts +0 -45
  100. package/dist/builtins/index.js +0 -45
  101. package/dist/builtins/index.js.map +0 -1
  102. package/dist/builtins/net/connect.d.ts +0 -7
  103. package/dist/builtins/net/connect.js +0 -42
  104. package/dist/builtins/net/connect.js.map +0 -1
  105. package/dist/builtins/net/cubepath.d.ts +0 -18
  106. package/dist/builtins/net/cubepath.js +0 -102
  107. package/dist/builtins/net/cubepath.js.map +0 -1
  108. package/dist/builtins/net/logout.d.ts +0 -6
  109. package/dist/builtins/net/logout.js +0 -24
  110. package/dist/builtins/net/logout.js.map +0 -1
  111. package/dist/builtins/net/pacs.d.ts +0 -24
  112. package/dist/builtins/net/pacs.js +0 -121
  113. package/dist/builtins/net/pacs.js.map +0 -1
  114. package/dist/builtins/net/pacsUtils.d.ts +0 -85
  115. package/dist/builtins/net/pacsUtils.js +0 -184
  116. package/dist/builtins/net/pacsUtils.js.map +0 -1
  117. package/dist/builtins/net/query.d.ts +0 -60
  118. package/dist/builtins/net/query.js +0 -324
  119. package/dist/builtins/net/query.js.map +0 -1
  120. package/dist/builtins/parametersofplugin.d.ts +0 -13
  121. package/dist/builtins/parametersofplugin.js +0 -43
  122. package/dist/builtins/parametersofplugin.js.map +0 -1
  123. package/dist/builtins/pluginExecute.d.ts +0 -27
  124. package/dist/builtins/pluginExecute.js +0 -165
  125. package/dist/builtins/pluginExecute.js.map +0 -1
  126. package/dist/builtins/proc.d.ts +0 -6
  127. package/dist/builtins/proc.helpers.d.ts +0 -68
  128. package/dist/builtins/proc.helpers.js +0 -102
  129. package/dist/builtins/proc.helpers.js.map +0 -1
  130. package/dist/builtins/proc.js +0 -289
  131. package/dist/builtins/proc.js.map +0 -1
  132. package/dist/builtins/res/compute.d.ts +0 -6
  133. package/dist/builtins/res/compute.js +0 -55
  134. package/dist/builtins/res/compute.js.map +0 -1
  135. package/dist/builtins/res/feed.d.ts +0 -6
  136. package/dist/builtins/res/feed.js +0 -244
  137. package/dist/builtins/res/feed.js.map +0 -1
  138. package/dist/builtins/res/feed.notes.d.ts +0 -28
  139. package/dist/builtins/res/feed.notes.js +0 -24
  140. package/dist/builtins/res/feed.notes.js.map +0 -1
  141. package/dist/builtins/res/files.d.ts +0 -18
  142. package/dist/builtins/res/files.js +0 -85
  143. package/dist/builtins/res/files.js.map +0 -1
  144. package/dist/builtins/res/group.d.ts +0 -6
  145. package/dist/builtins/res/group.js +0 -54
  146. package/dist/builtins/res/group.js.map +0 -1
  147. package/dist/builtins/res/pipeline.args.d.ts +0 -22
  148. package/dist/builtins/res/pipeline.args.js +0 -28
  149. package/dist/builtins/res/pipeline.args.js.map +0 -1
  150. package/dist/builtins/res/pipeline.d.ts +0 -20
  151. package/dist/builtins/res/pipeline.js +0 -252
  152. package/dist/builtins/res/pipeline.js.map +0 -1
  153. package/dist/builtins/res/plugin.d.ts +0 -13
  154. package/dist/builtins/res/plugin.js +0 -140
  155. package/dist/builtins/res/plugin.js.map +0 -1
  156. package/dist/builtins/res/plugininstance.d.ts +0 -6
  157. package/dist/builtins/res/plugininstance.js +0 -53
  158. package/dist/builtins/res/plugininstance.js.map +0 -1
  159. package/dist/builtins/res/pluginmeta.d.ts +0 -6
  160. package/dist/builtins/res/pluginmeta.js +0 -53
  161. package/dist/builtins/res/pluginmeta.js.map +0 -1
  162. package/dist/builtins/res/tag.d.ts +0 -6
  163. package/dist/builtins/res/tag.js +0 -53
  164. package/dist/builtins/res/tag.js.map +0 -1
  165. package/dist/builtins/res/workflow.d.ts +0 -6
  166. package/dist/builtins/res/workflow.js +0 -53
  167. package/dist/builtins/res/workflow.js.map +0 -1
  168. package/dist/builtins/store.d.ts +0 -6
  169. package/dist/builtins/store.js +0 -108
  170. package/dist/builtins/store.js.map +0 -1
  171. package/dist/builtins/sys/context.d.ts +0 -6
  172. package/dist/builtins/sys/context.js +0 -50
  173. package/dist/builtins/sys/context.js.map +0 -1
  174. package/dist/builtins/sys/physicalmode.d.ts +0 -6
  175. package/dist/builtins/sys/physicalmode.js +0 -41
  176. package/dist/builtins/sys/physicalmode.js.map +0 -1
  177. package/dist/builtins/sys/timing.d.ts +0 -6
  178. package/dist/builtins/sys/timing.js +0 -41
  179. package/dist/builtins/sys/timing.js.map +0 -1
  180. package/dist/builtins/sys/whoami.d.ts +0 -12
  181. package/dist/builtins/sys/whoami.js +0 -37
  182. package/dist/builtins/sys/whoami.js.map +0 -1
  183. package/dist/builtins/utils.d.ts +0 -55
  184. package/dist/builtins/utils.js +0 -145
  185. package/dist/builtins/utils.js.map +0 -1
  186. package/dist/builtins/wildcard.d.ts +0 -26
  187. package/dist/builtins/wildcard.js +0 -120
  188. package/dist/builtins/wildcard.js.map +0 -1
  189. package/dist/command-keys.d.ts +0 -8
  190. package/dist/command-keys.js +0 -32
  191. package/dist/command-keys.js.map +0 -1
  192. package/dist/core/dispatch.d.ts +0 -48
  193. package/dist/core/dispatch.js +0 -544
  194. package/dist/core/dispatch.js.map +0 -1
  195. package/dist/core/preprocess.d.ts +0 -46
  196. package/dist/core/preprocess.js +0 -146
  197. package/dist/core/preprocess.js.map +0 -1
  198. package/dist/core/question.d.ts +0 -34
  199. package/dist/core/question.js +0 -76
  200. package/dist/core/question.js.map +0 -1
  201. package/dist/lib/completer/index.d.ts +0 -15
  202. package/dist/lib/completer/index.js +0 -212
  203. package/dist/lib/completer/index.js.map +0 -1
  204. package/dist/lib/completer/pathComplete.helpers.d.ts +0 -22
  205. package/dist/lib/completer/pathComplete.helpers.js +0 -49
  206. package/dist/lib/completer/pathComplete.helpers.js.map +0 -1
  207. package/dist/lib/parser.d.ts +0 -13
  208. package/dist/lib/parser.js +0 -52
  209. package/dist/lib/parser.js.map +0 -1
  210. package/dist/lib/pipe.d.ts +0 -11
  211. package/dist/lib/pipe.js +0 -90
  212. package/dist/lib/pipe.js.map +0 -1
  213. package/dist/lib/prefetch.d.ts +0 -25
  214. package/dist/lib/prefetch.js +0 -64
  215. package/dist/lib/prefetch.js.map +0 -1
  216. package/dist/lib/semicolonParser.d.ts +0 -22
  217. package/dist/lib/semicolonParser.js +0 -53
  218. package/dist/lib/semicolonParser.js.map +0 -1
  219. package/dist/lib/spinner.d.ts +0 -23
  220. package/dist/lib/spinner.js +0 -70
  221. package/dist/lib/spinner.js.map +0 -1
  222. package/dist/lib/vfs/providers/static.d.ts +0 -65
  223. package/dist/lib/vfs/providers/static.js +0 -164
  224. package/dist/lib/vfs/providers/static.js.map +0 -1
  225. package/dist/lib/vfs/providers/static_content.d.ts +0 -27
  226. package/dist/lib/vfs/providers/static_content.js +0 -180
  227. package/dist/lib/vfs/providers/static_content.js.map +0 -1
  228. package/dist/lib/vfs/vfs.d.ts +0 -59
  229. package/dist/lib/vfs/vfs.js +0 -198
  230. package/dist/lib/vfs/vfs.js.map +0 -1
  231. package/dist/session/index.d.ts +0 -76
  232. package/dist/session/index.js +0 -120
  233. package/dist/session/index.js.map +0 -1
@@ -2,7 +2,7 @@
2
2
  * Parsed chell CLI configuration.
3
3
  */
4
4
  export interface ChellCLIConfig {
5
- mode: 'interactive' | 'connect' | 'help' | 'version' | 'execute' | 'script';
5
+ mode: 'interactive' | 'connect' | 'help' | 'version' | 'execute' | 'script' | 'daemon' | 'remote';
6
6
  physicalFS?: boolean;
7
7
  prefetchPlugins?: boolean;
8
8
  prefetchFeeds?: boolean;
@@ -36,6 +36,8 @@ export interface CliActionOptions {
36
36
  prefetchJobs?: boolean;
37
37
  asciiBoot?: boolean;
38
38
  logo?: boolean;
39
+ daemon?: boolean;
40
+ remote?: boolean;
39
41
  }
40
42
  /**
41
43
  * Builds a {@link ChellCLIConfig} from the parsed target/options, determining
package/dist/core/cli.js CHANGED
@@ -36,7 +36,15 @@ export function cliConfig_fromArgs(target, options, fileExists) {
36
36
  connectConfig = { user, password, url };
37
37
  }
38
38
  let config;
39
- if (options.file) {
39
+ if (options.remote) {
40
+ // A remote surface attaches to a daemon; it needs no local engine,
41
+ // connection, or CUBE credentials.
42
+ config = { mode: 'remote' };
43
+ }
44
+ else if (options.daemon) {
45
+ config = { mode: 'daemon', physicalFS: options.physicalFS, connectConfig };
46
+ }
47
+ else if (options.file) {
40
48
  config = { mode: 'script', scriptFile: options.file, stopOnError: options.e || false, physicalFS: options.physicalFS, connectConfig };
41
49
  }
42
50
  else if (options.command) {
@@ -151,6 +159,8 @@ ${chalk.bold.cyan('DESCRIPTION')}
151
159
  .option('--no-prefetch-jobs', 'Skip /proc/jobs job cache prefetch at startup')
152
160
  .option('--ascii-boot', 'Force ASCII-only boot UI (no box-drawing characters)')
153
161
  .option('--no-logo', 'Hide the ChRIS logo on startup (interactive mode)')
162
+ .option('--daemon', 'Run as a CALYPSO session daemon, hosting the engine over WebSocket')
163
+ .option('--remote', 'Attach to a running CALYPSO daemon as a remote surface')
154
164
  .addHelpText('after', `
155
165
  ${chalk.bold.cyan('INTERACTIVE COMMANDS')}
156
166
  ${chalk.bold.green('connect')} Connect to a ChRIS CUBE
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/core/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/core/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @file The CLI host's surface: interaction backed by readline and the local
3
+ * terminal.
4
+ *
5
+ * This is the concrete {@link Surface} the command-line host installs. It
6
+ * declares the full local capability set (hidden input, local editing, and a
7
+ * tty when stdout is one) and backs prompting with readline. Two flavors of
8
+ * prompt exist so the single-readline discipline is preserved: when the REPL
9
+ * is running it passes its own persistent interface, and hidden input is read
10
+ * by suppressing that interface's echo rather than opening a second one on the
11
+ * same stdin; outside the REPL (execute and script modes) a one-shot interface
12
+ * is created per prompt, matching the shell's historical fallback exactly.
13
+ *
14
+ * @module
15
+ */
16
+ import * as readline from 'readline';
17
+ import type { Surface } from '@fnndsc/brasa';
18
+ /**
19
+ * Creates the CLI host's surface.
20
+ *
21
+ * @param rl - The REPL's persistent readline interface, when running
22
+ * interactively. Omitted in execute and script modes, where each prompt
23
+ * uses a one-shot interface.
24
+ * @returns A surface backed by the local terminal.
25
+ */
26
+ export declare function cliSurface_create(rl?: readline.Interface): Surface;
@@ -0,0 +1,152 @@
1
+ /**
2
+ * @file The CLI host's surface: interaction backed by readline and the local
3
+ * terminal.
4
+ *
5
+ * This is the concrete {@link Surface} the command-line host installs. It
6
+ * declares the full local capability set (hidden input, local editing, and a
7
+ * tty when stdout is one) and backs prompting with readline. Two flavors of
8
+ * prompt exist so the single-readline discipline is preserved: when the REPL
9
+ * is running it passes its own persistent interface, and hidden input is read
10
+ * by suppressing that interface's echo rather than opening a second one on the
11
+ * same stdin; outside the REPL (execute and script modes) a one-shot interface
12
+ * is created per prompt, matching the shell's historical fallback exactly.
13
+ *
14
+ * @module
15
+ */
16
+ import * as readline from 'readline';
17
+ import { Writable } from 'stream';
18
+ import { spawnSync } from 'child_process';
19
+ import { writeFileSync, readFileSync, unlinkSync, existsSync } from 'fs';
20
+ import { tmpdir } from 'os';
21
+ import { join } from 'path';
22
+ import { segment_pipeThrough } from '@fnndsc/brasa';
23
+ /**
24
+ * Prompts on a persistent readline interface (the REPL's), suppressing echo
25
+ * for hidden input by intercepting the interface's own output hook. This
26
+ * keeps a single readline interface on stdin — no raw mode, no second
27
+ * interface, no keystrokes leaking back to the command loop.
28
+ *
29
+ * @param rl - The REPL's readline interface.
30
+ * @param request - The prompt message and whether to hide input.
31
+ * @returns The entered line, trimmed.
32
+ */
33
+ function persistentPrompt_ask(rl, request) {
34
+ if (!request.hidden) {
35
+ return new Promise((resolve) => {
36
+ rl.question(request.message, (answer) => resolve(answer.trim()));
37
+ });
38
+ }
39
+ const rlInternal = rl;
40
+ const originalWrite = rlInternal._writeToOutput.bind(rl);
41
+ rlInternal._writeToOutput = (_str) => { };
42
+ process.stdout.write(request.message);
43
+ return new Promise((resolve) => {
44
+ rl.question('', (answer) => {
45
+ rlInternal._writeToOutput = originalWrite;
46
+ process.stdout.write('\n');
47
+ resolve(answer.trim());
48
+ });
49
+ });
50
+ }
51
+ /**
52
+ * Prompts on a one-shot readline interface created for this call, used
53
+ * outside the REPL (execute and script modes). Hidden input is read through
54
+ * a muted output stream so the entry is not echoed.
55
+ *
56
+ * @param request - The prompt message and whether to hide input.
57
+ * @returns The entered line, trimmed.
58
+ */
59
+ function oneShotPrompt_ask(request) {
60
+ if (!request.hidden) {
61
+ return new Promise((resolve) => {
62
+ const rl = readline.createInterface({
63
+ input: process.stdin,
64
+ output: process.stdout,
65
+ });
66
+ rl.question(request.message, (answer) => {
67
+ rl.close();
68
+ resolve(answer.trim());
69
+ });
70
+ });
71
+ }
72
+ return new Promise((resolve) => {
73
+ const muted = new Writable({
74
+ write(_chunk, _encoding, callback) {
75
+ callback();
76
+ },
77
+ });
78
+ const rl = readline.createInterface({
79
+ input: process.stdin,
80
+ output: muted,
81
+ terminal: true,
82
+ });
83
+ process.stdout.write(request.message);
84
+ rl.question('', (answer) => {
85
+ process.stdout.write('\n');
86
+ rl.close();
87
+ resolve(answer.trim());
88
+ });
89
+ });
90
+ }
91
+ /**
92
+ * Opens content in the local `$EDITOR` and returns the edited result. Writes
93
+ * the content to a temp file, launches the editor against it, reads it back,
94
+ * and removes the temp file — the whole editor lifecycle is the surface's
95
+ * business, so builtins never touch a process or a terminal.
96
+ *
97
+ * @param request - The content to edit and an optional extension.
98
+ * @returns The edited content and whether it changed.
99
+ * @throws {Error} When the editor fails to launch.
100
+ */
101
+ function localEdit_run(request) {
102
+ const ext = request.extension && request.extension.length > 0 ? request.extension : '.txt';
103
+ const tmpPath = join(tmpdir(), `chell-edit-${Date.now()}${ext}`);
104
+ try {
105
+ writeFileSync(tmpPath, request.content, 'utf8');
106
+ const editor = process.env.EDITOR || process.env.VISUAL || 'vi';
107
+ const spawn = spawnSync(editor, [tmpPath], { stdio: 'inherit' });
108
+ if (spawn.error) {
109
+ throw new Error(`failed to launch '${editor}': ${spawn.error.message}`);
110
+ }
111
+ const edited = readFileSync(tmpPath, 'utf8');
112
+ return Promise.resolve({ content: edited, changed: edited !== request.content });
113
+ }
114
+ finally {
115
+ if (existsSync(tmpPath)) {
116
+ try {
117
+ unlinkSync(tmpPath);
118
+ }
119
+ catch { /* ignore */ }
120
+ }
121
+ }
122
+ }
123
+ /**
124
+ * Creates the CLI host's surface.
125
+ *
126
+ * @param rl - The REPL's persistent readline interface, when running
127
+ * interactively. Omitted in execute and script modes, where each prompt
128
+ * uses a one-shot interface.
129
+ * @returns A surface backed by the local terminal.
130
+ */
131
+ export function cliSurface_create(rl) {
132
+ const capabilities = {
133
+ hiddenInput: true,
134
+ localEdit: true,
135
+ tty: !!process.stdout.isTTY,
136
+ pipeSegments: true,
137
+ };
138
+ return {
139
+ capabilities,
140
+ prompt(request) {
141
+ return rl ? persistentPrompt_ask(rl, request) : oneShotPrompt_ask(request);
142
+ },
143
+ pipeSegment(command, input) {
144
+ // The local CLI runs pipe segments in-process, exactly as before.
145
+ return segment_pipeThrough(command, input);
146
+ },
147
+ localEdit(request) {
148
+ return localEdit_run(request);
149
+ },
150
+ };
151
+ }
152
+ //# sourceMappingURL=cliSurface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliSurface.js","sourceRoot":"","sources":["../../src/core/cliSurface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { ProgressEvent, ProgressRenderer } from '@fnndsc/brasa';
2
+ type ProgressBar = {
3
+ update(value: number, payload?: Record<string, string>): void;
4
+ setTotal(total: number): void;
5
+ stop?(): void;
6
+ };
7
+ type SingleBarCtor = new (options: Record<string, unknown>, preset: unknown) => ProgressBar & {
8
+ start(total: number, startValue: number, payload?: Record<string, string>): void;
9
+ };
10
+ type MultiBarInstance = {
11
+ create(total: number, startValue: number, payload?: Record<string, string>): ProgressBar;
12
+ remove(bar: ProgressBar): void;
13
+ stop(): void;
14
+ };
15
+ type MultiBarCtor = new (options: Record<string, unknown>, preset: unknown) => MultiBarInstance;
16
+ export interface ProgressBarFactory {
17
+ SingleBar: SingleBarCtor;
18
+ MultiBar: MultiBarCtor;
19
+ preset: unknown;
20
+ }
21
+ export interface ProgressRendererOptions {
22
+ stream?: NodeJS.WriteStream;
23
+ isTTY?: boolean;
24
+ factory?: ProgressBarFactory;
25
+ }
26
+ /**
27
+ * Renders semantic progress to a terminal.
28
+ */
29
+ export declare class TerminalProgressRenderer implements ProgressRenderer {
30
+ private readonly stream;
31
+ private readonly isTTY;
32
+ private readonly factory;
33
+ private readonly transferBars;
34
+ private readonly pullBars;
35
+ private pullMultiBar;
36
+ constructor(options?: ProgressRendererOptions);
37
+ write(event: ProgressEvent): void;
38
+ clear(): void;
39
+ private transfer_write;
40
+ private pull_write;
41
+ }
42
+ export {};
@@ -0,0 +1,176 @@
1
+ /**
2
+ * @file Terminal renderer for semantic progress events.
3
+ *
4
+ * Producers emit facts. This renderer is the terminal-only adapter that turns
5
+ * those facts into bars when attached to a TTY, or into low-noise status lines
6
+ * when output is not interactive.
7
+ *
8
+ * @module
9
+ */
10
+ import cliProgress from 'cli-progress';
11
+ const TERMINAL_STATUSES = new Set([
12
+ 'done',
13
+ 'unconfirmed',
14
+ 'stalled',
15
+ 'timeout',
16
+ 'error',
17
+ ]);
18
+ function defaultFactory_get() {
19
+ return {
20
+ SingleBar: cliProgress.SingleBar,
21
+ MultiBar: cliProgress.MultiBar,
22
+ preset: cliProgress.Presets.shades_classic,
23
+ };
24
+ }
25
+ function event_total(event) {
26
+ const current = event.current ?? 0;
27
+ return Math.max(event.total ?? current, current, 1);
28
+ }
29
+ function event_current(event) {
30
+ return Math.min(event.current ?? 0, event_total(event));
31
+ }
32
+ function event_label(event) {
33
+ const base = event.label ?? event.operation;
34
+ const statusLabel = status_label(event.status);
35
+ return statusLabel ? `${base} ${statusLabel}` : base;
36
+ }
37
+ function status_label(status) {
38
+ if (status === 'done')
39
+ return '[DONE]';
40
+ if (status === 'unconfirmed')
41
+ return '[UNCONFIRMED]';
42
+ if (status === 'stalled')
43
+ return '[STALLED]';
44
+ if (status === 'timeout')
45
+ return '[TIMEOUT]';
46
+ if (status === 'error')
47
+ return '[ERROR]';
48
+ return '';
49
+ }
50
+ function fallback_shouldPrint(event) {
51
+ if (event.phase === 'complete' || event.phase === 'failed')
52
+ return true;
53
+ return event.status !== undefined && TERMINAL_STATUSES.has(event.status);
54
+ }
55
+ function fallback_line(event) {
56
+ const parts = [event.operation];
57
+ if (event.label)
58
+ parts.push(event.label);
59
+ if (event.status)
60
+ parts.push(event.status);
61
+ if (event.current !== undefined && event.total !== undefined) {
62
+ parts.push(`${event.current}/${event.total}`);
63
+ }
64
+ else if (event.current !== undefined) {
65
+ parts.push(`${event.current}`);
66
+ }
67
+ if (event.unit)
68
+ parts.push(event.unit);
69
+ return `${parts.join(' ')}\n`;
70
+ }
71
+ /**
72
+ * Renders semantic progress to a terminal.
73
+ */
74
+ export class TerminalProgressRenderer {
75
+ stream;
76
+ isTTY;
77
+ factory;
78
+ transferBars = new Map();
79
+ pullBars = new Map();
80
+ pullMultiBar = null;
81
+ constructor(options = {}) {
82
+ this.stream = options.stream ?? process.stdout;
83
+ this.isTTY = options.isTTY ?? !!this.stream.isTTY;
84
+ this.factory = options.factory ?? defaultFactory_get();
85
+ }
86
+ write(event) {
87
+ if (!this.isTTY) {
88
+ if (fallback_shouldPrint(event)) {
89
+ this.stream.write(fallback_line(event));
90
+ }
91
+ return;
92
+ }
93
+ if (event.operation === 'pull') {
94
+ if (event.itemId) {
95
+ this.pull_write(event);
96
+ }
97
+ else if (event.phase === 'complete' || event.phase === 'failed') {
98
+ this.pullMultiBar?.stop();
99
+ this.pullMultiBar = null;
100
+ this.pullBars.clear();
101
+ }
102
+ return;
103
+ }
104
+ this.transfer_write(event);
105
+ }
106
+ clear() {
107
+ for (const state of this.transferBars.values()) {
108
+ state.bar.stop?.();
109
+ }
110
+ this.transferBars.clear();
111
+ this.pullMultiBar?.stop();
112
+ this.pullMultiBar = null;
113
+ this.pullBars.clear();
114
+ }
115
+ transfer_write(event) {
116
+ if (event.phase === 'complete' || event.phase === 'failed') {
117
+ const existing = this.transferBars.get(event.operation);
118
+ if (existing) {
119
+ existing.bar.update(event_current(event), { label: event_label(event), unit: event.unit ?? '' });
120
+ existing.bar.stop?.();
121
+ this.transferBars.delete(event.operation);
122
+ }
123
+ else {
124
+ this.stream.write(fallback_line(event));
125
+ }
126
+ return;
127
+ }
128
+ const total = event_total(event);
129
+ let state = this.transferBars.get(event.operation);
130
+ if (!state) {
131
+ const bar = new this.factory.SingleBar({
132
+ format: ' {label} [{bar}] {value}/{total} {unit}',
133
+ hideCursor: true,
134
+ clearOnComplete: false,
135
+ stopOnComplete: false,
136
+ }, this.factory.preset);
137
+ bar.start(total, event_current(event), { label: event_label(event), unit: event.unit ?? '' });
138
+ state = { bar, total };
139
+ this.transferBars.set(event.operation, state);
140
+ return;
141
+ }
142
+ if (total !== state.total) {
143
+ state.bar.setTotal(total);
144
+ state.total = total;
145
+ }
146
+ state.bar.update(event_current(event), { label: event_label(event), unit: event.unit ?? '' });
147
+ }
148
+ pull_write(event) {
149
+ if (!this.pullMultiBar) {
150
+ this.pullMultiBar = new this.factory.MultiBar({
151
+ format: ' {label} [{bar}] {value}/{total} {unit}',
152
+ hideCursor: true,
153
+ clearOnComplete: false,
154
+ stopOnComplete: false,
155
+ }, this.factory.preset);
156
+ }
157
+ const key = event.itemId;
158
+ const total = event_total(event);
159
+ let state = this.pullBars.get(key);
160
+ if (!state) {
161
+ const bar = this.pullMultiBar.create(total, event_current(event), {
162
+ label: event_label(event),
163
+ unit: event.unit ?? '',
164
+ });
165
+ state = { bar, total };
166
+ this.pullBars.set(key, state);
167
+ return;
168
+ }
169
+ if (total !== state.total) {
170
+ state.bar.setTotal(total);
171
+ state.total = total;
172
+ }
173
+ state.bar.update(event_current(event), { label: event_label(event), unit: event.unit ?? '' });
174
+ }
175
+ }
176
+ //# sourceMappingURL=progressRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progressRenderer.js","sourceRoot":"","sources":["../../src/core/progressRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @file Rendering the current session's themed prompt string.
3
+ *
4
+ * The prompt reflects live session context — user, CUBE, working directory,
5
+ * PACS, physical-mode, warm-up progress — which only the process holding that
6
+ * context can render. Both the local REPL and the daemon (which pushes the
7
+ * prompt to remote surfaces) render it here, so the same theme produces the
8
+ * same string on every surface.
9
+ *
10
+ * @module
11
+ */
12
+ import { type SessionPromptContext } from '@fnndsc/brasa';
13
+ /**
14
+ * Inputs the caller knows that the session state does not.
15
+ *
16
+ * @property lastExitCode - The previous command's exit code (default 0).
17
+ * @property lastCommandDurationMs - The previous command's duration (default 0).
18
+ * @property terminalWidth - The rendering width (default the local stdout
19
+ * columns, or 80).
20
+ */
21
+ export interface SessionPromptOptions {
22
+ lastExitCode?: number;
23
+ lastCommandDurationMs?: number;
24
+ terminalWidth?: number;
25
+ }
26
+ /**
27
+ * Renders a themed prompt string from an engine prompt context.
28
+ *
29
+ * Combines the engine-known facts with this surface's own rendering inputs
30
+ * (theme, enabled segments, terminal width) and renders. Used both for the
31
+ * local session and for a context pushed by a remote daemon, so every surface
32
+ * themes the prompt its own way from the same facts.
33
+ *
34
+ * @param context - The engine-known prompt facts.
35
+ * @param terminalWidth - The rendering width (default local stdout columns, or 80).
36
+ * @returns The rendered prompt string.
37
+ */
38
+ export declare function promptFromContext_render(context: SessionPromptContext, terminalWidth?: number): string;
39
+ /**
40
+ * Renders the themed prompt string for the current local session context.
41
+ *
42
+ * @param options - The last-command and width inputs.
43
+ * @returns The rendered prompt string.
44
+ */
45
+ export declare function sessionPrompt_render(options?: SessionPromptOptions): Promise<string>;
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @file Rendering the current session's themed prompt string.
3
+ *
4
+ * The prompt reflects live session context — user, CUBE, working directory,
5
+ * PACS, physical-mode, warm-up progress — which only the process holding that
6
+ * context can render. Both the local REPL and the daemon (which pushes the
7
+ * prompt to remote surfaces) render it here, so the same theme produces the
8
+ * same string on every surface.
9
+ *
10
+ * @module
11
+ */
12
+ import { sessionPromptContext_build } from '@fnndsc/brasa';
13
+ import { settings } from '../../config/settings.js';
14
+ import { prompt_render } from './index.js';
15
+ /**
16
+ * Renders a themed prompt string from an engine prompt context.
17
+ *
18
+ * Combines the engine-known facts with this surface's own rendering inputs
19
+ * (theme, enabled segments, terminal width) and renders. Used both for the
20
+ * local session and for a context pushed by a remote daemon, so every surface
21
+ * themes the prompt its own way from the same facts.
22
+ *
23
+ * @param context - The engine-known prompt facts.
24
+ * @param terminalWidth - The rendering width (default local stdout columns, or 80).
25
+ * @returns The rendered prompt string.
26
+ */
27
+ export function promptFromContext_render(context, terminalWidth) {
28
+ const ctx = {
29
+ ...context,
30
+ terminalWidth: terminalWidth ?? (process.stdout.columns || 80),
31
+ p10kSegments: settings.config.p10kSegments,
32
+ };
33
+ return prompt_render(settings.config.promptTheme, ctx);
34
+ }
35
+ /**
36
+ * Renders the themed prompt string for the current local session context.
37
+ *
38
+ * @param options - The last-command and width inputs.
39
+ * @returns The rendered prompt string.
40
+ */
41
+ export async function sessionPrompt_render(options = {}) {
42
+ const context = await sessionPromptContext_build({
43
+ lastExitCode: options.lastExitCode,
44
+ lastCommandDurationMs: options.lastCommandDurationMs,
45
+ });
46
+ return promptFromContext_render(context, options.terminalWidth);
47
+ }
48
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/core/prompt/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,0BAA0B,EAA6B,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,aAAa,EAAsB,MAAM,YAAY,CAAC;AAgB/D;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAA6B,EAAE,aAAsB;IAC5F,MAAM,GAAG,GAAkB;QACzB,GAAG,OAAO;QACV,aAAa,EAAE,aAAa,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QAC9D,YAAY,EAAG,QAAQ,CAAC,MAAM,CAAC,YAAY;KAC5C,CAAC;IACF,OAAO,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,UAAgC,EAAE;IAC3E,MAAM,OAAO,GAAyB,MAAM,0BAA0B,CAAC;QACrE,YAAY,EAAW,OAAO,CAAC,YAAY;QAC3C,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;KACrD,CAAC,CAAC;IACH,OAAO,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;AAClE,CAAC"}
@@ -1,20 +1,40 @@
1
+ import type { BrasaEngine } from '@fnndsc/brasa';
2
+ /**
3
+ * Handles the Read-Eval-Print Loop (REPL) interaction.
4
+ */
5
+ /**
6
+ * Options for the REPL host.
7
+ *
8
+ * @property promptText - A prompt to display instead of the locally-rendered
9
+ * themed prompt: a fixed string, or a provider called on each redraw. The
10
+ * remote client passes a provider that returns the latest prompt string the
11
+ * daemon pushed, so a remote surface shows the same themed prompt as a local
12
+ * session.
13
+ */
14
+ export interface ReplOptions {
15
+ promptText?: string | (() => string);
16
+ }
1
17
  /**
2
18
  * Handles the Read-Eval-Print Loop (REPL) interaction.
3
19
  */
4
20
  export declare class REPL {
5
21
  private rl;
22
+ private engine;
6
23
  private isOpen;
7
24
  private lastCommandDurationMs;
8
25
  private lastExitCode;
26
+ private promptText;
9
27
  /**
10
- * Initializes the REPL interface.
28
+ * Initializes the REPL interface around an engine.
29
+ *
30
+ * @param engine - The engine that executes lines and answers completions.
31
+ * @param options - Optional host settings (e.g. a fixed prompt string).
11
32
  */
12
- constructor();
33
+ constructor(engine: BrasaEngine, options?: ReplOptions);
13
34
  /**
14
- * Starts the REPL loop.
15
- * @param commandHandler - Async function to process each input line.
35
+ * Starts the REPL loop, executing each input line through the engine.
16
36
  */
17
- start(commandHandler: (line: string) => Promise<void>): Promise<void>;
37
+ start(): Promise<void>;
18
38
  /**
19
39
  * Updates and redisplays the prompt based on current session state.
20
40
  */