@fnndsc/brasa 0.1.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 (226) hide show
  1. package/dist/builtins/debug.d.ts +8 -0
  2. package/dist/builtins/debug.js +39 -0
  3. package/dist/builtins/debug.js.map +1 -0
  4. package/dist/builtins/executable.d.ts +22 -0
  5. package/dist/builtins/executable.js +115 -0
  6. package/dist/builtins/executable.js.map +1 -0
  7. package/dist/builtins/fs/cat.d.ts +16 -0
  8. package/dist/builtins/fs/cat.js +266 -0
  9. package/dist/builtins/fs/cat.js.map +1 -0
  10. package/dist/builtins/fs/cd.d.ts +42 -0
  11. package/dist/builtins/fs/cd.js +193 -0
  12. package/dist/builtins/fs/cd.js.map +1 -0
  13. package/dist/builtins/fs/cp.d.ts +10 -0
  14. package/dist/builtins/fs/cp.js +86 -0
  15. package/dist/builtins/fs/cp.js.map +1 -0
  16. package/dist/builtins/fs/download.d.ts +6 -0
  17. package/dist/builtins/fs/download.js +45 -0
  18. package/dist/builtins/fs/download.js.map +1 -0
  19. package/dist/builtins/fs/du.d.ts +58 -0
  20. package/dist/builtins/fs/du.js +210 -0
  21. package/dist/builtins/fs/du.js.map +1 -0
  22. package/dist/builtins/fs/edit.d.ts +7 -0
  23. package/dist/builtins/fs/edit.js +104 -0
  24. package/dist/builtins/fs/edit.js.map +1 -0
  25. package/dist/builtins/fs/ls.d.ts +8 -0
  26. package/dist/builtins/fs/ls.js +68 -0
  27. package/dist/builtins/fs/ls.js.map +1 -0
  28. package/dist/builtins/fs/mkdir.d.ts +9 -0
  29. package/dist/builtins/fs/mkdir.js +52 -0
  30. package/dist/builtins/fs/mkdir.js.map +1 -0
  31. package/dist/builtins/fs/mv.d.ts +10 -0
  32. package/dist/builtins/fs/mv.js +88 -0
  33. package/dist/builtins/fs/mv.js.map +1 -0
  34. package/dist/builtins/fs/pull.args.d.ts +22 -0
  35. package/dist/builtins/fs/pull.args.js +30 -0
  36. package/dist/builtins/fs/pull.args.js.map +1 -0
  37. package/dist/builtins/fs/pull.d.ts +26 -0
  38. package/dist/builtins/fs/pull.js +445 -0
  39. package/dist/builtins/fs/pull.js.map +1 -0
  40. package/dist/builtins/fs/pwd.d.ts +10 -0
  41. package/dist/builtins/fs/pwd.js +73 -0
  42. package/dist/builtins/fs/pwd.js.map +1 -0
  43. package/dist/builtins/fs/rm.d.ts +37 -0
  44. package/dist/builtins/fs/rm.js +197 -0
  45. package/dist/builtins/fs/rm.js.map +1 -0
  46. package/dist/builtins/fs/touch.d.ts +9 -0
  47. package/dist/builtins/fs/touch.js +76 -0
  48. package/dist/builtins/fs/touch.js.map +1 -0
  49. package/dist/builtins/fs/tree.d.ts +15 -0
  50. package/dist/builtins/fs/tree.js +84 -0
  51. package/dist/builtins/fs/tree.js.map +1 -0
  52. package/dist/builtins/fs/upload.d.ts +6 -0
  53. package/dist/builtins/fs/upload.js +48 -0
  54. package/dist/builtins/fs/upload.js.map +1 -0
  55. package/dist/builtins/help.d.ts +74 -0
  56. package/dist/builtins/help.js +1217 -0
  57. package/dist/builtins/help.js.map +1 -0
  58. package/dist/builtins/index.d.ts +45 -0
  59. package/dist/builtins/index.js +45 -0
  60. package/dist/builtins/index.js.map +1 -0
  61. package/dist/builtins/net/connect.d.ts +7 -0
  62. package/dist/builtins/net/connect.js +42 -0
  63. package/dist/builtins/net/connect.js.map +1 -0
  64. package/dist/builtins/net/cubepath.d.ts +18 -0
  65. package/dist/builtins/net/cubepath.js +102 -0
  66. package/dist/builtins/net/cubepath.js.map +1 -0
  67. package/dist/builtins/net/logout.d.ts +6 -0
  68. package/dist/builtins/net/logout.js +24 -0
  69. package/dist/builtins/net/logout.js.map +1 -0
  70. package/dist/builtins/net/pacs.d.ts +24 -0
  71. package/dist/builtins/net/pacs.js +121 -0
  72. package/dist/builtins/net/pacs.js.map +1 -0
  73. package/dist/builtins/net/pacsUtils.d.ts +85 -0
  74. package/dist/builtins/net/pacsUtils.js +184 -0
  75. package/dist/builtins/net/pacsUtils.js.map +1 -0
  76. package/dist/builtins/net/query.d.ts +60 -0
  77. package/dist/builtins/net/query.js +324 -0
  78. package/dist/builtins/net/query.js.map +1 -0
  79. package/dist/builtins/parametersofplugin.d.ts +13 -0
  80. package/dist/builtins/parametersofplugin.js +43 -0
  81. package/dist/builtins/parametersofplugin.js.map +1 -0
  82. package/dist/builtins/pluginExecute.d.ts +27 -0
  83. package/dist/builtins/pluginExecute.js +165 -0
  84. package/dist/builtins/pluginExecute.js.map +1 -0
  85. package/dist/builtins/proc.d.ts +6 -0
  86. package/dist/builtins/proc.helpers.d.ts +68 -0
  87. package/dist/builtins/proc.helpers.js +102 -0
  88. package/dist/builtins/proc.helpers.js.map +1 -0
  89. package/dist/builtins/proc.js +289 -0
  90. package/dist/builtins/proc.js.map +1 -0
  91. package/dist/builtins/res/compute.d.ts +6 -0
  92. package/dist/builtins/res/compute.js +55 -0
  93. package/dist/builtins/res/compute.js.map +1 -0
  94. package/dist/builtins/res/feed.d.ts +6 -0
  95. package/dist/builtins/res/feed.js +244 -0
  96. package/dist/builtins/res/feed.js.map +1 -0
  97. package/dist/builtins/res/feed.notes.d.ts +28 -0
  98. package/dist/builtins/res/feed.notes.js +24 -0
  99. package/dist/builtins/res/feed.notes.js.map +1 -0
  100. package/dist/builtins/res/files.d.ts +18 -0
  101. package/dist/builtins/res/files.js +85 -0
  102. package/dist/builtins/res/files.js.map +1 -0
  103. package/dist/builtins/res/group.d.ts +6 -0
  104. package/dist/builtins/res/group.js +54 -0
  105. package/dist/builtins/res/group.js.map +1 -0
  106. package/dist/builtins/res/pipeline.args.d.ts +22 -0
  107. package/dist/builtins/res/pipeline.args.js +28 -0
  108. package/dist/builtins/res/pipeline.args.js.map +1 -0
  109. package/dist/builtins/res/pipeline.d.ts +20 -0
  110. package/dist/builtins/res/pipeline.js +252 -0
  111. package/dist/builtins/res/pipeline.js.map +1 -0
  112. package/dist/builtins/res/plugin.d.ts +13 -0
  113. package/dist/builtins/res/plugin.js +140 -0
  114. package/dist/builtins/res/plugin.js.map +1 -0
  115. package/dist/builtins/res/plugininstance.d.ts +6 -0
  116. package/dist/builtins/res/plugininstance.js +53 -0
  117. package/dist/builtins/res/plugininstance.js.map +1 -0
  118. package/dist/builtins/res/pluginmeta.d.ts +6 -0
  119. package/dist/builtins/res/pluginmeta.js +53 -0
  120. package/dist/builtins/res/pluginmeta.js.map +1 -0
  121. package/dist/builtins/res/tag.d.ts +6 -0
  122. package/dist/builtins/res/tag.js +53 -0
  123. package/dist/builtins/res/tag.js.map +1 -0
  124. package/dist/builtins/res/workflow.d.ts +6 -0
  125. package/dist/builtins/res/workflow.js +53 -0
  126. package/dist/builtins/res/workflow.js.map +1 -0
  127. package/dist/builtins/store.d.ts +6 -0
  128. package/dist/builtins/store.js +107 -0
  129. package/dist/builtins/store.js.map +1 -0
  130. package/dist/builtins/sys/context.d.ts +6 -0
  131. package/dist/builtins/sys/context.js +50 -0
  132. package/dist/builtins/sys/context.js.map +1 -0
  133. package/dist/builtins/sys/physicalmode.d.ts +8 -0
  134. package/dist/builtins/sys/physicalmode.js +34 -0
  135. package/dist/builtins/sys/physicalmode.js.map +1 -0
  136. package/dist/builtins/sys/timing.d.ts +8 -0
  137. package/dist/builtins/sys/timing.js +34 -0
  138. package/dist/builtins/sys/timing.js.map +1 -0
  139. package/dist/builtins/sys/version.d.ts +15 -0
  140. package/dist/builtins/sys/version.js +23 -0
  141. package/dist/builtins/sys/version.js.map +1 -0
  142. package/dist/builtins/sys/whoami.d.ts +17 -0
  143. package/dist/builtins/sys/whoami.js +44 -0
  144. package/dist/builtins/sys/whoami.js.map +1 -0
  145. package/dist/builtins/utils.d.ts +55 -0
  146. package/dist/builtins/utils.js +145 -0
  147. package/dist/builtins/utils.js.map +1 -0
  148. package/dist/builtins/wildcard.d.ts +26 -0
  149. package/dist/builtins/wildcard.js +120 -0
  150. package/dist/builtins/wildcard.js.map +1 -0
  151. package/dist/command-keys.d.ts +8 -0
  152. package/dist/command-keys.js +32 -0
  153. package/dist/command-keys.js.map +1 -0
  154. package/dist/config/storeConfig.d.ts +57 -0
  155. package/dist/config/storeConfig.js +78 -0
  156. package/dist/config/storeConfig.js.map +1 -0
  157. package/dist/core/chiliDelegate.d.ts +21 -0
  158. package/dist/core/chiliDelegate.js +32 -0
  159. package/dist/core/chiliDelegate.js.map +1 -0
  160. package/dist/core/connect.d.ts +38 -0
  161. package/dist/core/connect.js +46 -0
  162. package/dist/core/connect.js.map +1 -0
  163. package/dist/core/dispatch.d.ts +95 -0
  164. package/dist/core/dispatch.js +618 -0
  165. package/dist/core/dispatch.js.map +1 -0
  166. package/dist/core/engine.d.ts +91 -0
  167. package/dist/core/engine.js +222 -0
  168. package/dist/core/engine.js.map +1 -0
  169. package/dist/core/preprocess.d.ts +46 -0
  170. package/dist/core/preprocess.js +146 -0
  171. package/dist/core/preprocess.js.map +1 -0
  172. package/dist/core/progress.d.ts +50 -0
  173. package/dist/core/progress.js +21 -0
  174. package/dist/core/progress.js.map +1 -0
  175. package/dist/core/promptContext.d.ts +49 -0
  176. package/dist/core/promptContext.js +39 -0
  177. package/dist/core/promptContext.js.map +1 -0
  178. package/dist/core/question.d.ts +27 -0
  179. package/dist/core/question.js +33 -0
  180. package/dist/core/question.js.map +1 -0
  181. package/dist/core/sink.d.ts +207 -0
  182. package/dist/core/sink.js +329 -0
  183. package/dist/core/sink.js.map +1 -0
  184. package/dist/core/surface.d.ts +172 -0
  185. package/dist/core/surface.js +105 -0
  186. package/dist/core/surface.js.map +1 -0
  187. package/dist/core/version.d.ts +20 -0
  188. package/dist/core/version.js +82 -0
  189. package/dist/core/version.js.map +1 -0
  190. package/dist/index.d.ts +31 -0
  191. package/dist/index.js +32 -0
  192. package/dist/index.js.map +1 -0
  193. package/dist/lib/completer/index.d.ts +15 -0
  194. package/dist/lib/completer/index.js +212 -0
  195. package/dist/lib/completer/index.js.map +1 -0
  196. package/dist/lib/completer/pathComplete.helpers.d.ts +22 -0
  197. package/dist/lib/completer/pathComplete.helpers.js +49 -0
  198. package/dist/lib/completer/pathComplete.helpers.js.map +1 -0
  199. package/dist/lib/parser.d.ts +13 -0
  200. package/dist/lib/parser.js +52 -0
  201. package/dist/lib/parser.js.map +1 -0
  202. package/dist/lib/pipe.d.ts +11 -0
  203. package/dist/lib/pipe.js +90 -0
  204. package/dist/lib/pipe.js.map +1 -0
  205. package/dist/lib/prefetch.d.ts +25 -0
  206. package/dist/lib/prefetch.js +64 -0
  207. package/dist/lib/prefetch.js.map +1 -0
  208. package/dist/lib/semicolonParser.d.ts +22 -0
  209. package/dist/lib/semicolonParser.js +53 -0
  210. package/dist/lib/semicolonParser.js.map +1 -0
  211. package/dist/lib/spinner.d.ts +23 -0
  212. package/dist/lib/spinner.js +71 -0
  213. package/dist/lib/spinner.js.map +1 -0
  214. package/dist/lib/vfs/providers/static.d.ts +65 -0
  215. package/dist/lib/vfs/providers/static.js +164 -0
  216. package/dist/lib/vfs/providers/static.js.map +1 -0
  217. package/dist/lib/vfs/providers/static_content.d.ts +27 -0
  218. package/dist/lib/vfs/providers/static_content.js +180 -0
  219. package/dist/lib/vfs/providers/static_content.js.map +1 -0
  220. package/dist/lib/vfs/vfs.d.ts +59 -0
  221. package/dist/lib/vfs/vfs.js +202 -0
  222. package/dist/lib/vfs/vfs.js.map +1 -0
  223. package/dist/session/index.d.ts +76 -0
  224. package/dist/session/index.js +120 -0
  225. package/dist/session/index.js.map +1 -0
  226. package/package.json +58 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semicolonParser.js","sourceRoot":"","sources":["../../src/lib/semicolonParser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,cAAc,GAAW,EAAE,CAAC;IAChC,IAAI,aAAa,GAAY,KAAK,CAAC;IACnC,IAAI,aAAa,GAAY,KAAK,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAW,IAAI,CAAC,CAAC,CAAC,CAAC;QAE7B,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACnC,aAAa,GAAG,CAAC,aAAa,CAAC;YAC/B,cAAc,IAAI,IAAI,CAAC;QACzB,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAC1C,aAAa,GAAG,CAAC,aAAa,CAAC;YAC/B,cAAc,IAAI,IAAI,CAAC;QACzB,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5D,MAAM,OAAO,GAAW,cAAc,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAI,OAAO;gBAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpC,cAAc,GAAG,EAAE,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,cAAc,IAAI,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,MAAM,OAAO,GAAW,cAAc,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,OAAO;QAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEpC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @file Terminal spinner utility for long-running operations.
3
+ *
4
+ * @module
5
+ */
6
+ /**
7
+ * Terminal spinner indicating progress of async work.
8
+ */
9
+ export declare class Spinner {
10
+ private interval;
11
+ private message;
12
+ private frames;
13
+ private frameIndex;
14
+ private spinnerActive;
15
+ private startTime;
16
+ private showTiming;
17
+ constructor(initialMessage?: string);
18
+ start(message?: string, showTiming?: boolean): void;
19
+ stop(clearLine?: boolean): void;
20
+ updateMessage(newMessage: string): void;
21
+ }
22
+ declare const globalSpinner: Spinner;
23
+ export { globalSpinner as spinner };
@@ -0,0 +1,71 @@
1
+ /**
2
+ * @file Terminal spinner utility for long-running operations.
3
+ *
4
+ * @module
5
+ */
6
+ import chalk from 'chalk';
7
+ import { sink_get } from '../core/sink.js';
8
+ /**
9
+ * Terminal spinner indicating progress of async work.
10
+ */
11
+ export class Spinner {
12
+ interval = null;
13
+ message = '';
14
+ frames = ["⣾", "⣽", "⣻", "⢿", "⡿", "⣟", "⣯", "⣷"];
15
+ frameIndex = 0;
16
+ spinnerActive = false;
17
+ startTime = 0;
18
+ showTiming = false;
19
+ constructor(initialMessage = 'Loading...') {
20
+ this.message = initialMessage;
21
+ }
22
+ start(message, showTiming = false) {
23
+ // Do not start spinner if not in a TTY (e.g. piped output)
24
+ if (!process.stdout.isTTY) {
25
+ return;
26
+ }
27
+ if (this.spinnerActive) {
28
+ this.stop(); // Stop any existing spinner
29
+ }
30
+ this.message = message || this.message;
31
+ this.spinnerActive = true;
32
+ this.frameIndex = 0;
33
+ this.showTiming = showTiming;
34
+ this.startTime = Date.now();
35
+ // Hide cursor
36
+ sink_get().status_write('\x1B[?25l');
37
+ this.interval = setInterval(() => {
38
+ const frame = this.frames[this.frameIndex = (this.frameIndex + 1) % this.frames.length];
39
+ let displayMessage = this.message;
40
+ // Add timing if enabled
41
+ if (this.showTiming) {
42
+ const elapsedSeconds = ((Date.now() - this.startTime) / 1000).toFixed(1);
43
+ displayMessage = `${this.message} (${elapsedSeconds}s)`;
44
+ }
45
+ // Note: We use chalk.gray for the message to match the existing "Fetching..." style.
46
+ // \x1b[K erases to end-of-line so a shorter message never leaves the
47
+ // tail of a longer previous one behind.
48
+ sink_get().status_write(`\r\x1b[K${chalk.bgBlack.cyanBright.bold(frame)} ${chalk.gray(displayMessage)}`);
49
+ }, 80);
50
+ }
51
+ stop(clearLine = true) {
52
+ if (this.interval) {
53
+ clearInterval(this.interval);
54
+ this.interval = null;
55
+ }
56
+ if (this.spinnerActive) {
57
+ if (clearLine) {
58
+ sink_get().status_write('\r\x1b[K'); // Clear line
59
+ }
60
+ // Show cursor
61
+ sink_get().status_write('\x1B[?25h');
62
+ this.spinnerActive = false;
63
+ }
64
+ }
65
+ updateMessage(newMessage) {
66
+ this.message = newMessage;
67
+ }
68
+ }
69
+ const globalSpinner = new Spinner();
70
+ export { globalSpinner as spinner };
71
+ //# sourceMappingURL=spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/lib/spinner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * @file Static Virtual File System Provider.
3
+ *
4
+ * Implements virtual directories for `/bin`, `/usr`, and `/usr/bin` under the VFSDispatcher.
5
+ *
6
+ * @module
7
+ */
8
+ import { Result } from '@fnndsc/cumin';
9
+ import { VFSProvider, VFSItem, CpOptions } from '@fnndsc/salsa';
10
+ /**
11
+ * Static virtual filesystem provider for command and builtin paths.
12
+ */
13
+ export declare class StaticVfsProvider implements VFSProvider {
14
+ /** The prefix path this provider handles. */
15
+ prefix: string;
16
+ /**
17
+ * Initializes the static provider with its target prefix path.
18
+ *
19
+ * @param prefix - The absolute virtual directory prefix.
20
+ */
21
+ constructor(prefix: string);
22
+ /**
23
+ * Lists the contents of the matched static prefix path.
24
+ *
25
+ * @param pathStr - The absolute path.
26
+ * @param options - Sort controls.
27
+ * @returns Promise resolving to Result of VFSItems.
28
+ */
29
+ list(pathStr: string, options?: {
30
+ sort?: "name" | "size" | "date" | "owner";
31
+ reverse?: boolean;
32
+ }): Promise<Result<VFSItem[]>>;
33
+ /**
34
+ * Block copy operations for static paths.
35
+ *
36
+ * @param src - Source path.
37
+ * @param dest - Destination path.
38
+ * @param options - Copy options.
39
+ * @returns Promise resolving to false always to block copying.
40
+ */
41
+ cp(src: string, dest: string, options: CpOptions): Promise<boolean>;
42
+ /**
43
+ * Standard sort helper for virtual items.
44
+ *
45
+ * @param items - The VFSItem array to sort.
46
+ * @param sortField - Field to sort by.
47
+ * @param reverse - True to reverse output sorting.
48
+ * @returns Sorted VFSItem array.
49
+ */
50
+ private staticVfsItems_sort;
51
+ /**
52
+ * Reads virtual file content under command and builtin static paths.
53
+ *
54
+ * @param pathStr - The absolute virtual path of the file to read.
55
+ * @returns Promise resolving to a Result containing the file contents.
56
+ */
57
+ read(pathStr: string): Promise<Result<string>>;
58
+ /**
59
+ * Reads virtual file binary content under command and builtin static paths.
60
+ *
61
+ * @param pathStr - The absolute virtual path of the file to read.
62
+ * @returns Promise resolving to a Result containing the file contents as a Buffer.
63
+ */
64
+ readBinary(pathStr: string): Promise<Result<Buffer>>;
65
+ }
@@ -0,0 +1,164 @@
1
+ /**
2
+ * @file Static Virtual File System Provider.
3
+ *
4
+ * Implements virtual directories for `/bin`, `/usr`, and `/usr/bin` under the VFSDispatcher.
5
+ *
6
+ * @module
7
+ */
8
+ import { Ok, Err, errorStack } from '@fnndsc/cumin';
9
+ import { plugins_listAll, pipelines_getAll } from '@fnndsc/salsa';
10
+ import { builtinCommands_list } from '../../../builtins/help.js';
11
+ import { staticVfs_read, staticVfs_readBinary } from './static_content.js';
12
+ /**
13
+ * Static virtual filesystem provider for command and builtin paths.
14
+ */
15
+ export class StaticVfsProvider {
16
+ /** The prefix path this provider handles. */
17
+ prefix;
18
+ /**
19
+ * Initializes the static provider with its target prefix path.
20
+ *
21
+ * @param prefix - The absolute virtual directory prefix.
22
+ */
23
+ constructor(prefix) {
24
+ this.prefix = prefix;
25
+ }
26
+ /**
27
+ * Lists the contents of the matched static prefix path.
28
+ *
29
+ * @param pathStr - The absolute path.
30
+ * @param options - Sort controls.
31
+ * @returns Promise resolving to Result of VFSItems.
32
+ */
33
+ async list(pathStr, options) {
34
+ try {
35
+ let effectivePath = pathStr.startsWith("/") ? pathStr : "/" + pathStr;
36
+ if (effectivePath.length > 1 && effectivePath.endsWith("/")) {
37
+ effectivePath = effectivePath.slice(0, -1);
38
+ }
39
+ if (effectivePath === "/bin") {
40
+ const [plugins, pipelinesResult] = await Promise.all([
41
+ plugins_listAll({}),
42
+ pipelines_getAll(),
43
+ ]);
44
+ const items = [];
45
+ if (plugins && plugins.tableData) {
46
+ plugins.tableData.forEach((plugin) => {
47
+ const pluginName = typeof plugin.name === 'string' ? plugin.name : String(plugin.name);
48
+ const pluginVersion = typeof plugin.version === 'string' ? plugin.version : String(plugin.version || '');
49
+ const displayName = pluginVersion ? `${pluginName}-v${pluginVersion}` : pluginName;
50
+ items.push({
51
+ name: displayName,
52
+ type: "plugin",
53
+ size: 0,
54
+ owner: "system",
55
+ date: typeof plugin.creation_date === 'string' ? plugin.creation_date : '',
56
+ });
57
+ });
58
+ }
59
+ if (pipelinesResult.ok) {
60
+ pipelinesResult.value.forEach((pipeline) => {
61
+ const slug = typeof pipeline.slug === 'string' ? pipeline.slug : pipeline.name.replace(/\s+/g, '_');
62
+ items.push({
63
+ name: slug,
64
+ type: "pipeline",
65
+ size: 0,
66
+ owner: typeof pipeline.authors === 'string' ? pipeline.authors : 'system',
67
+ date: '',
68
+ title: pipeline.name,
69
+ });
70
+ });
71
+ }
72
+ const sorted = this.staticVfsItems_sort(items, options?.sort, options?.reverse);
73
+ return Ok(sorted);
74
+ }
75
+ if (effectivePath === "/usr") {
76
+ const items = [
77
+ {
78
+ name: "bin",
79
+ type: "vfs",
80
+ size: 0,
81
+ owner: "root",
82
+ date: new Date().toISOString(),
83
+ }
84
+ ];
85
+ return Ok(items);
86
+ }
87
+ if (effectivePath === "/usr/bin") {
88
+ const builtinNames = builtinCommands_list();
89
+ const items = builtinNames.map((name) => ({
90
+ name,
91
+ type: "plugin",
92
+ size: 0,
93
+ owner: "system",
94
+ date: new Date().toISOString(),
95
+ }));
96
+ const sorted = this.staticVfsItems_sort(items, options?.sort, options?.reverse);
97
+ return Ok(sorted);
98
+ }
99
+ return Ok([]);
100
+ }
101
+ catch (error) {
102
+ const msg = error instanceof Error ? error.message : String(error);
103
+ errorStack.stack_push("error", `Static VFS list failed for prefix ${this.prefix}: ${msg}`);
104
+ return Err();
105
+ }
106
+ }
107
+ /**
108
+ * Block copy operations for static paths.
109
+ *
110
+ * @param src - Source path.
111
+ * @param dest - Destination path.
112
+ * @param options - Copy options.
113
+ * @returns Promise resolving to false always to block copying.
114
+ */
115
+ async cp(src, dest, options) {
116
+ errorStack.stack_push("error", `cp: Copying from static VFS path '${src}' is not supported.`);
117
+ return false;
118
+ }
119
+ /**
120
+ * Standard sort helper for virtual items.
121
+ *
122
+ * @param items - The VFSItem array to sort.
123
+ * @param sortField - Field to sort by.
124
+ * @param reverse - True to reverse output sorting.
125
+ * @returns Sorted VFSItem array.
126
+ */
127
+ staticVfsItems_sort(items, sortField, reverse) {
128
+ const field = sortField || "name";
129
+ const sorted = [...items].sort((a, b) => {
130
+ const valA = a[field];
131
+ const valB = b[field];
132
+ if (typeof valA === "string" && typeof valB === "string") {
133
+ return valA.localeCompare(valB);
134
+ }
135
+ if (typeof valA === "number" && typeof valB === "number") {
136
+ return valA - valB;
137
+ }
138
+ return 0;
139
+ });
140
+ if (reverse) {
141
+ sorted.reverse();
142
+ }
143
+ return sorted;
144
+ }
145
+ /**
146
+ * Reads virtual file content under command and builtin static paths.
147
+ *
148
+ * @param pathStr - The absolute virtual path of the file to read.
149
+ * @returns Promise resolving to a Result containing the file contents.
150
+ */
151
+ async read(pathStr) {
152
+ return staticVfs_read(pathStr, this.prefix);
153
+ }
154
+ /**
155
+ * Reads virtual file binary content under command and builtin static paths.
156
+ *
157
+ * @param pathStr - The absolute virtual path of the file to read.
158
+ * @returns Promise resolving to a Result containing the file contents as a Buffer.
159
+ */
160
+ async readBinary(pathStr) {
161
+ return staticVfs_readBinary(pathStr, this.prefix);
162
+ }
163
+ }
164
+ //# sourceMappingURL=static.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static.js","sourceRoot":"","sources":["../../../../src/lib/vfs/providers/static.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @file Static VFS Content Handler.
3
+ *
4
+ * Implements specialized virtual file reading and content generation
5
+ * for static command directories (/bin, /usr/bin).
6
+ *
7
+ * @module
8
+ */
9
+ import { Result } from '@fnndsc/cumin';
10
+ /**
11
+ * Reads virtual file content under command and builtin static paths.
12
+ *
13
+ * Handles help text formatting for /usr/bin and fetches parameter specifications for /bin plugins.
14
+ *
15
+ * @param pathStr - The absolute virtual path of the file to read.
16
+ * @param prefix - The prefix of the calling provider (e.g. '/usr/bin', '/bin').
17
+ * @returns Promise resolving to a Result containing the file contents as a string.
18
+ */
19
+ export declare function staticVfs_read(pathStr: string, prefix: string): Promise<Result<string>>;
20
+ /**
21
+ * Reads virtual file binary content under command and builtin static paths.
22
+ *
23
+ * @param pathStr - The absolute virtual path of the file to read.
24
+ * @param prefix - The prefix of the calling provider.
25
+ * @returns Promise resolving to a Result containing the file contents as a Buffer.
26
+ */
27
+ export declare function staticVfs_readBinary(pathStr: string, prefix: string): Promise<Result<Buffer>>;
@@ -0,0 +1,180 @@
1
+ /**
2
+ * @file Static VFS Content Handler.
3
+ *
4
+ * Implements specialized virtual file reading and content generation
5
+ * for static command directories (/bin, /usr/bin).
6
+ *
7
+ * @module
8
+ */
9
+ import { Ok, Err, errorStack, pipeline_resolve } from '@fnndsc/cumin';
10
+ import { commandHelp_get } from '../../../builtins/help.js';
11
+ import { pipeline_sourceGet } from '@fnndsc/salsa';
12
+ import chalk from 'chalk';
13
+ import { session } from '../../../session/index.js';
14
+ /**
15
+ * Formats a plugin parameter list into a beautifully aligned text manual.
16
+ *
17
+ * @param plugin - The resolved ChRIS plugin object.
18
+ * @param parameters - Array of plugin parameters.
19
+ * @param command - The exact plugin command/filename.
20
+ * @returns Formatted details string.
21
+ */
22
+ function pluginParameters_render(plugin, parameters, command) {
23
+ const lines = [];
24
+ lines.push('');
25
+ lines.push(chalk.bold.magenta(`${plugin.data.name.toUpperCase()} (Version ${plugin.data.version})`));
26
+ lines.push(chalk.gray('─'.repeat(74)));
27
+ lines.push(`${chalk.bold.blue('Type:')} ${plugin.data.type || 'ds'}`);
28
+ lines.push(`${chalk.bold.blue('Author:')} ${plugin.data.authors || 'FNNDSC <dev@babymri.org>'}`);
29
+ if (plugin.data.documentation) {
30
+ lines.push(`${chalk.bold.blue('Repository:')} ${plugin.data.documentation}`);
31
+ }
32
+ lines.push('');
33
+ lines.push(chalk.bold.blue('DESCRIPTION'));
34
+ lines.push(` ${plugin.data.description || 'No description provided.'}`);
35
+ lines.push('');
36
+ lines.push(chalk.bold.blue('PARAMETERS'));
37
+ lines.push(` ${chalk.bold.white('Flag'.padEnd(22))}${chalk.bold.white('Type'.padEnd(11))}${chalk.bold.white('Required'.padEnd(11))}${chalk.bold.white('Default'.padEnd(13))}${chalk.bold.white('Description')}`);
38
+ lines.push(` ${chalk.gray('─'.repeat(74))}`);
39
+ parameters.forEach((param) => {
40
+ const flag = `--${param.data.name}`;
41
+ const type = param.data.type || 'string';
42
+ const required = param.data.optional ? 'No' : 'Yes';
43
+ let defaultValue = '';
44
+ if (param.data.default !== undefined && param.data.default !== null) {
45
+ defaultValue = String(param.data.default);
46
+ if (defaultValue === '') {
47
+ defaultValue = '""';
48
+ }
49
+ }
50
+ else {
51
+ defaultValue = 'None';
52
+ }
53
+ const help = param.data.help || '';
54
+ lines.push(` ${chalk.yellow(flag.padEnd(22))}${type.padEnd(11)}${required.padEnd(11)}${defaultValue.padEnd(13)}${help}`);
55
+ });
56
+ lines.push('');
57
+ lines.push(chalk.bold.blue('USAGE EXAMPLES'));
58
+ const requiredParams = parameters.filter((p) => !p.data.optional);
59
+ const optionalParams = parameters.filter((p) => p.data.optional);
60
+ const requiredFlags = requiredParams.map((p) => `--${p.data.name} "value"`).join(' ');
61
+ const basicExample = requiredFlags ? `${command} ${requiredFlags}` : command;
62
+ lines.push(` ${chalk.white(basicExample)} ${chalk.gray('# Basic execution')}`);
63
+ if (optionalParams.length > 0) {
64
+ const exampleParam = optionalParams[0].data.name;
65
+ const withOptional = requiredFlags
66
+ ? `${command} ${requiredFlags} --${exampleParam} "value"`
67
+ : `${command} --${exampleParam} "value"`;
68
+ lines.push(` ${chalk.white(withOptional)} ${chalk.gray('# With optional parameter')}`);
69
+ }
70
+ lines.push('');
71
+ return lines.join('\n');
72
+ }
73
+ /**
74
+ * Renders a brief info block for a pipeline that has no registered YAML source.
75
+ *
76
+ * @param pipeline - The resolved PipelineRecord.
77
+ * @returns Formatted summary string.
78
+ */
79
+ function pipelineSummary_render(pipeline) {
80
+ const lines = [];
81
+ lines.push('');
82
+ lines.push(chalk.bold.magenta(pipeline.name));
83
+ lines.push(chalk.gray('─'.repeat(74)));
84
+ lines.push(`${chalk.bold.blue('ID:')} ${pipeline.id}`);
85
+ if (pipeline.authors)
86
+ lines.push(`${chalk.bold.blue('Authors:')} ${pipeline.authors}`);
87
+ if (pipeline.category)
88
+ lines.push(`${chalk.bold.blue('Category:')} ${pipeline.category}`);
89
+ if (pipeline.locked !== undefined)
90
+ lines.push(`${chalk.bold.blue('Locked:')} ${pipeline.locked}`);
91
+ if (pipeline.description) {
92
+ lines.push('');
93
+ lines.push(chalk.bold.blue('DESCRIPTION'));
94
+ lines.push(` ${pipeline.description}`);
95
+ }
96
+ lines.push('');
97
+ lines.push(chalk.dim('No YAML source registered. Use `pipeline info <name>` for full DAG details.'));
98
+ lines.push('');
99
+ return lines.join('\n');
100
+ }
101
+ /**
102
+ * Reads virtual file content under command and builtin static paths.
103
+ *
104
+ * Handles help text formatting for /usr/bin and fetches parameter specifications for /bin plugins.
105
+ *
106
+ * @param pathStr - The absolute virtual path of the file to read.
107
+ * @param prefix - The prefix of the calling provider (e.g. '/usr/bin', '/bin').
108
+ * @returns Promise resolving to a Result containing the file contents as a string.
109
+ */
110
+ export async function staticVfs_read(pathStr, prefix) {
111
+ try {
112
+ let effectivePath = pathStr.startsWith("/") ? pathStr : "/" + pathStr;
113
+ if (effectivePath.length > 1 && effectivePath.endsWith("/")) {
114
+ effectivePath = effectivePath.slice(0, -1);
115
+ }
116
+ if (prefix === "/usr/bin") {
117
+ const commandName = effectivePath.substring("/usr/bin/".length);
118
+ const helpStr = commandHelp_get(commandName);
119
+ if (helpStr !== undefined) {
120
+ return Ok(helpStr);
121
+ }
122
+ errorStack.stack_push("error", `No help available for command: ${commandName}`);
123
+ return Err();
124
+ }
125
+ if (prefix === "/bin") {
126
+ const commandName = effectivePath.substring("/bin/".length);
127
+ const versionSeparatorIndex = commandName.lastIndexOf('-v');
128
+ if (versionSeparatorIndex === -1) {
129
+ const yamlResult = await pipeline_sourceGet(commandName);
130
+ if (yamlResult.ok)
131
+ return Ok(yamlResult.value);
132
+ const resolveResult = await pipeline_resolve(commandName);
133
+ if (resolveResult.ok)
134
+ return Ok(pipelineSummary_render(resolveResult.value));
135
+ errorStack.stack_push("error", `Unknown /bin entry: ${commandName}`);
136
+ return Err();
137
+ }
138
+ const name = commandName.substring(0, versionSeparatorIndex);
139
+ const version = commandName.substring(versionSeparatorIndex + 2);
140
+ const client = await session.connection.client_get();
141
+ if (!client) {
142
+ errorStack.stack_push("error", "No active ChRIS connection to fetch plugin parameter specs");
143
+ return Err();
144
+ }
145
+ const pluginsList = await client.getPlugins({ name_exact: name, version: version, limit: 1 });
146
+ const plugins = pluginsList.getItems();
147
+ if (!plugins || plugins.length === 0) {
148
+ errorStack.stack_push("error", `Plugin not found on server: ${name} v${version}`);
149
+ return Err();
150
+ }
151
+ const plugin = plugins[0];
152
+ const parametersList = await plugin.getPluginParameters({ limit: 100 });
153
+ const parameters = parametersList.getItems();
154
+ const output = pluginParameters_render(plugin, parameters, commandName);
155
+ return Ok(output);
156
+ }
157
+ errorStack.stack_push("error", `File not found: ${pathStr}`);
158
+ return Err();
159
+ }
160
+ catch (error) {
161
+ const msg = error instanceof Error ? error.message : String(error);
162
+ errorStack.stack_push("error", `Static VFS read failed for prefix ${prefix}: ${msg}`);
163
+ return Err();
164
+ }
165
+ }
166
+ /**
167
+ * Reads virtual file binary content under command and builtin static paths.
168
+ *
169
+ * @param pathStr - The absolute virtual path of the file to read.
170
+ * @param prefix - The prefix of the calling provider.
171
+ * @returns Promise resolving to a Result containing the file contents as a Buffer.
172
+ */
173
+ export async function staticVfs_readBinary(pathStr, prefix) {
174
+ const res = await staticVfs_read(pathStr, prefix);
175
+ if (res.ok) {
176
+ return Ok(Buffer.from(res.value, "utf-8"));
177
+ }
178
+ return Err();
179
+ }
180
+ //# sourceMappingURL=static_content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static_content.js","sourceRoot":"","sources":["../../../../src/lib/vfs/providers/static_content.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import { ListingItem } from '@fnndsc/chili/models/listing.js';
2
+ import { Result } from '@fnndsc/cumin';
3
+ /**
4
+ * Virtual File System Router.
5
+ * Dispatches operations to Virtual or Native providers.
6
+ */
7
+ export declare class VFS {
8
+ /**
9
+ * Gets data for a directory (Virtual or Native).
10
+ * Separated from rendering to allow Result<T> pattern.
11
+ *
12
+ * @param targetPath - The path to get data for. If empty, uses CWD.
13
+ * @param options - Options including directory flag and sort.
14
+ * @returns Result<ListingItem[]> - Ok with items or Err with error message.
15
+ */
16
+ data_get(targetPath?: string, options?: {
17
+ sort?: 'name' | 'size' | 'date' | 'owner';
18
+ reverse?: boolean;
19
+ directory?: boolean;
20
+ }): Promise<Result<ListingItem[]>>;
21
+ /**
22
+ * Returns the directory entry for `absolutePath` itself (not its contents).
23
+ * Looks up the entry in the parent's listing — used to implement `ls -d`.
24
+ *
25
+ * @param absolutePath - The fully resolved path of the target.
26
+ * @param options - Sort options forwarded to the parent listing.
27
+ */
28
+ private directoryEntry_get;
29
+ /**
30
+ * List contents of a directory (Virtual or Native).
31
+ * Convenience method that fetches data and renders it.
32
+ * Implements optimistic rendering with progress feedback:
33
+ * - Stale cache: serve immediately with "(cached, refreshing...)" indicator
34
+ * - Cache miss: show "Fetching..." after 500ms if still loading
35
+ *
36
+ * @param targetPath - The path to list. If empty, uses CWD.
37
+ * @param options - Listing options (long, human, sort, reverse, directory).
38
+ */
39
+ list(targetPath?: string, options?: {
40
+ long?: boolean;
41
+ human?: boolean;
42
+ oneColumn?: boolean;
43
+ sort?: 'name' | 'size' | 'date' | 'owner';
44
+ reverse?: boolean;
45
+ directory?: boolean;
46
+ }): Promise<void>;
47
+ /**
48
+ * Refreshes cache in the background without blocking or updating display.
49
+ * Used for optimistic rendering - fetch fresh data after serving stale cache.
50
+ *
51
+ * @param targetPath - The path to refresh.
52
+ * @param options - Options including sort and reverse.
53
+ */
54
+ private refreshInBackground;
55
+ }
56
+ /**
57
+ * Shared VFS singleton.
58
+ */
59
+ export declare const vfs: VFS;