@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
@@ -1,30 +0,0 @@
1
- /**
2
- * @file Pure argument parsing for the `pull` builtin.
3
- *
4
- * Dependency-free so it is trivially unit-testable.
5
- *
6
- * @module
7
- */
8
- /**
9
- * Parses `pull` arguments: the `--nowait` flag, `--retry N`, and path operands.
10
- *
11
- * @param args - Raw command arguments.
12
- * @returns The parsed flags and paths.
13
- */
14
- export function pullArgs_parse(args) {
15
- const nowait = args.includes('--nowait');
16
- let retryMax = 0;
17
- const paths = [];
18
- for (let i = 0; i < args.length; i++) {
19
- if (args[i] === '--retry' && i + 1 < args.length) {
20
- const n = parseInt(args[++i], 10);
21
- if (!isNaN(n) && n >= 0)
22
- retryMax = n;
23
- }
24
- else if (!args[i].startsWith('--')) {
25
- paths.push(args[i]);
26
- }
27
- }
28
- return { nowait, retryMax, paths };
29
- }
30
- //# sourceMappingURL=pull.args.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pull.args.js","sourceRoot":"","sources":["../../../src/builtins/fs/pull.args.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAc;IAC3C,MAAM,MAAM,GAAY,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAClD,IAAI,QAAQ,GAAW,CAAC,CAAC;IACzB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACjD,MAAM,CAAC,GAAW,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,QAAQ,GAAG,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACrC,CAAC"}
@@ -1,26 +0,0 @@
1
- /**
2
- * @file Builtin pull command.
3
- *
4
- * Blocking PACS series retrieve with parallel execution and per-series MultiBar progress.
5
- * Accepts one or more `/net/pacs/queries/...` VFS paths (query, study, or series level)
6
- * and materialises the matching DICOM series into ChRIS storage.
7
- *
8
- * Progress is driven by LONK WebSocket push notifications (api/v1/pacs/ws/).
9
- * Use `--retry N` to automatically re-fire retrieves for series that received no LONK activity.
10
- *
11
- * @module
12
- */
13
- /**
14
- * Pulls one or more `/net/pacs/queries/...` VFS paths into ChRIS storage.
15
- *
16
- * Blocking by default: shows per-series MultiBar progress via LONK WebSocket,
17
- * exits non-zero on partial failure.
18
- * With `--nowait`: fires retrieves and prints `<seriesUID> <retrieveId>` per line, then returns.
19
- * With `--retry N`: re-fires retrieves for [NO LONK] series up to N additional times.
20
- *
21
- * @param args - Command arguments (VFS paths, optional flags).
22
- * @example
23
- * pull /net/pacs/queries/42_AccessionNumber:12345678
24
- * pull --retry 3 /net/pacs/queries/42_AccessionNumber:12345678/Study_1.2.3_US-Hips
25
- */
26
- export declare function builtin_pull(args: string[]): Promise<void>;
@@ -1,417 +0,0 @@
1
- /**
2
- * @file Builtin pull command.
3
- *
4
- * Blocking PACS series retrieve with parallel execution and per-series MultiBar progress.
5
- * Accepts one or more `/net/pacs/queries/...` VFS paths (query, study, or series level)
6
- * and materialises the matching DICOM series into ChRIS storage.
7
- *
8
- * Progress is driven by LONK WebSocket push notifications (api/v1/pacs/ws/).
9
- * Use `--retry N` to automatically re-fire retrieves for series that received no LONK activity.
10
- *
11
- * @module
12
- */
13
- import chalk from 'chalk';
14
- import cliProgress from 'cli-progress';
15
- import WebSocket from 'ws';
16
- import { pacsQueries_create, pacsRetrieve_create, } from '@fnndsc/cumin';
17
- import { session } from '../../session/index.js';
18
- import { args_checkHasHelpFlag, help_show } from '../help.js';
19
- import { pacsQuery_createAndWait, queryExpr_parse } from '../net/query.js';
20
- import { spinner } from '../../lib/spinner.js';
21
- import { path_resolve } from '../utils.js';
22
- import { pacs_seriesCollect, pacsServer_resolve, series_cubePathGet, } from '../net/pacsUtils.js';
23
- import { builtin_cubepath } from '../net/cubepath.js';
24
- import { pullArgs_parse } from './pull.args.js';
25
- const STALL_TIMEOUT_MS = 30_000;
26
- const NO_ACTIVITY_TIMEOUT_MS = 15_000;
27
- const SERIES_TIMEOUT_MS = 5 * 60 * 1_000;
28
- const CHECKER_INTERVAL_MS = 2_000;
29
- /**
30
- * Walks a VFS path and returns SeriesPullTask array, delegating collection to pacsUtils.
31
- *
32
- * @param pathStr - Absolute VFS path to a query, study, or series directory.
33
- * @param fallbackPacsName - PACS identifier used when RetrieveAETitle is absent.
34
- * @returns Array of SeriesPullTask ready for firing.
35
- */
36
- async function path_seriesCollect(pathStr, fallbackPacsName) {
37
- const infos = await pacs_seriesCollect(pathStr, fallbackPacsName, 'pull');
38
- return infos.map((info) => ({
39
- label: info.label,
40
- seriesUID: info.seriesUID,
41
- studyUID: info.studyUID,
42
- pacsName: info.pacsName,
43
- expectedFiles: info.expectedFiles,
44
- syntheticQueryId: null,
45
- retrieveId: null,
46
- status: 'pending',
47
- actualFiles: 0,
48
- lastProgressFiles: 0,
49
- lastProgressTime: Date.now(),
50
- startTime: 0,
51
- lonkConfirmed: false,
52
- cubePathDir: null,
53
- }));
54
- }
55
- /**
56
- * Creates a synthetic PACSQuery + PACSRetrieve for a single series.
57
- *
58
- * @param task - The pull task to fire (mutated in place: syntheticQueryId, retrieveId, startTime).
59
- * @param pacsserver - Resolved PACS server ID string.
60
- */
61
- async function task_fire(task, pacsserver) {
62
- const queryData = {
63
- // CUBE rejects duplicate query titles per user, which used to make a
64
- // re-pull of the same series fail; a timestamp keeps titles unique.
65
- title: `pull_${task.seriesUID}_${Date.now().toString(36)}`,
66
- query: JSON.stringify({
67
- SeriesInstanceUID: task.seriesUID,
68
- StudyInstanceUID: task.studyUID,
69
- }),
70
- execute: false,
71
- };
72
- const queryResult = await pacsQueries_create(pacsserver, queryData);
73
- if (!queryResult.ok) {
74
- task.status = 'error';
75
- return;
76
- }
77
- const syntheticQueryId = queryResult.value.id;
78
- const retrieveResult = await pacsRetrieve_create(syntheticQueryId);
79
- if (!retrieveResult.ok) {
80
- task.status = 'error';
81
- return;
82
- }
83
- task.syntheticQueryId = syntheticQueryId;
84
- task.retrieveId = retrieveResult.value.id;
85
- task.startTime = Date.now();
86
- }
87
- /**
88
- * Constructs a LONK WebSocket URL from a download token response.
89
- *
90
- * @param tokenUrl - The download token resource URL.
91
- * @param token - The actual download token string.
92
- * @returns WebSocket URL for the LONK endpoint.
93
- */
94
- function lonkWsUrl_build(tokenUrl, token) {
95
- return tokenUrl
96
- .replace(/^http(s?):\/\//, (_m, s) => `ws${s}://`)
97
- .replace(/v1\/downloadtokens\/\d+\//, `v1/pacs/ws/?token=${token}`);
98
- }
99
- /**
100
- * Opens a LONK WebSocket, fires retrieves for the given tasks, and blocks until all
101
- * tasks reach a terminal state. Mutates each task's status, actualFiles, and lonkConfirmed.
102
- *
103
- * @param tasks - Tasks to subscribe, fire, and watch.
104
- * @param pacsserver - Resolved PACS server identifier.
105
- * @param client - Authenticated ChRIS API client.
106
- * @returns Number of tasks that failed to fire their retrieve.
107
- */
108
- async function tasks_pullWatch(tasks, pacsserver, client) {
109
- const tokenClient = client;
110
- const downloadToken = await tokenClient.createDownloadToken();
111
- const tokenStr = String(downloadToken.data.token ?? '');
112
- const wsUrl = lonkWsUrl_build(downloadToken.url, tokenStr);
113
- const ws = new WebSocket(wsUrl);
114
- await new Promise((openResolve, openReject) => {
115
- ws.once('open', openResolve);
116
- ws.once('error', (err) => openReject(err));
117
- });
118
- for (const t of tasks) {
119
- ws.send(JSON.stringify({
120
- SeriesInstanceUID: t.seriesUID,
121
- pacs_name: t.pacsName,
122
- action: 'subscribe',
123
- }));
124
- }
125
- await Promise.all(tasks.map((t) => task_fire(t, pacsserver)));
126
- const fired = tasks.filter((t) => t.status !== 'error');
127
- const firingErrors = tasks.length - fired.length;
128
- if (fired.length === 0) {
129
- ws.close();
130
- return firingErrors;
131
- }
132
- const multiBar = new cliProgress.MultiBar({
133
- format: ' {label}> [{bar}] {value}/{total}',
134
- barCompleteChar: '█',
135
- barIncompleteChar: '░',
136
- hideCursor: true,
137
- clearOnComplete: false,
138
- stopOnComplete: false,
139
- noTTYOutput: true,
140
- }, cliProgress.Presets.shades_classic);
141
- const barMap = new Map();
142
- for (const t of tasks) {
143
- const bar = multiBar.create(Math.max(t.expectedFiles, 1), 0, { label: t.label });
144
- barMap.set(t, bar);
145
- }
146
- const taskByUID = new Map(tasks.map((t) => [t.seriesUID, t]));
147
- await new Promise((resolve) => {
148
- let resolved = false;
149
- const done = () => {
150
- if (resolved)
151
- return;
152
- resolved = true;
153
- clearInterval(checker);
154
- try {
155
- ws.close();
156
- }
157
- catch { /* ignore */ }
158
- resolve();
159
- };
160
- const checker = setInterval(() => {
161
- const now = Date.now();
162
- let allTerminal = true;
163
- for (const t of fired) {
164
- if (t.status === 'pulled' || t.status === 'error' || t.status === 'stalled' || t.status === 'timeout') {
165
- continue;
166
- }
167
- allTerminal = false;
168
- const bar = barMap.get(t);
169
- if (t.startTime > 0 && now - t.startTime > SERIES_TIMEOUT_MS) {
170
- t.status = 'timeout';
171
- bar?.update(t.actualFiles, { label: `${t.label} [TIMEOUT]` });
172
- continue;
173
- }
174
- if (t.actualFiles > 0 && now - t.lastProgressTime > STALL_TIMEOUT_MS) {
175
- t.status = 'stalled';
176
- bar?.update(t.actualFiles, { label: `${t.label} [STALLED]` });
177
- continue;
178
- }
179
- if (t.startTime > 0 && t.actualFiles === 0 && now - t.startTime > NO_ACTIVITY_TIMEOUT_MS) {
180
- t.status = 'pulled';
181
- t.lonkConfirmed = false;
182
- bar?.update(Math.max(t.expectedFiles, 1), { label: `${t.label} [NO LONK]` });
183
- continue;
184
- }
185
- }
186
- if (allTerminal)
187
- done();
188
- }, CHECKER_INTERVAL_MS);
189
- ws.on('message', (data) => {
190
- try {
191
- const outer = JSON.parse(data.toString());
192
- const seriesUID = outer.SeriesInstanceUID;
193
- const message = outer.message;
194
- if (!seriesUID || !message)
195
- return;
196
- const t = taskByUID.get(seriesUID);
197
- if (!t)
198
- return;
199
- const bar = barMap.get(t);
200
- if ('ndicom' in message && typeof message.ndicom === 'number') {
201
- const n = message.ndicom;
202
- t.actualFiles = n;
203
- t.lastProgressFiles = n;
204
- t.lastProgressTime = Date.now();
205
- if (t.status === 'pending')
206
- t.status = 'pulling';
207
- const total = t.expectedFiles > 0 ? t.expectedFiles : Math.max(n, 1);
208
- bar?.setTotal(total);
209
- bar?.update(n);
210
- }
211
- else if ('done' in message && message.done === true) {
212
- t.status = 'pulled';
213
- t.lonkConfirmed = true;
214
- const finalTotal = t.expectedFiles > 0 ? t.expectedFiles : t.actualFiles || 1;
215
- bar?.setTotal(finalTotal);
216
- bar?.update(finalTotal, { label: `${t.label} [DONE]` });
217
- }
218
- else if ('error' in message && typeof message.error === 'string') {
219
- t.status = 'error';
220
- bar?.update(t.actualFiles, { label: `${t.label} [ERROR]` });
221
- }
222
- }
223
- catch {
224
- // Malformed message — ignore
225
- }
226
- });
227
- ws.on('error', () => {
228
- for (const t of fired) {
229
- if (t.status === 'pending' || t.status === 'pulling') {
230
- t.status = 'error';
231
- barMap.get(t)?.update(t.actualFiles, { label: `${t.label} [WS ERROR]` });
232
- }
233
- }
234
- done();
235
- });
236
- ws.on('close', () => { done(); });
237
- });
238
- multiBar.stop();
239
- return firingErrors;
240
- }
241
- /**
242
- * Resolves raw path/query arguments to concrete `/net/pacs` VFS paths,
243
- * running PACS queries for query expressions.
244
- *
245
- * @param paths - Raw path or query-expression operands.
246
- * @param pacsserver - The resolved PACS server identifier.
247
- * @returns The resolved VFS paths.
248
- */
249
- async function paths_resolveToVfs(paths, pacsserver) {
250
- const resolvedPaths = [];
251
- for (const rawPath of paths) {
252
- const p = rawPath.startsWith('/') ? rawPath : await path_resolve(rawPath);
253
- if (p.startsWith('/net/pacs')) {
254
- resolvedPaths.push(p);
255
- }
256
- else if (queryExpr_parse(rawPath)) {
257
- // Query with the RAW expression: path resolution prefixes the CWD,
258
- // which would corrupt the first DICOM key (e.g. '/AccessionNumber').
259
- spinner.start(`Querying PACS for ${rawPath}...`, true);
260
- const qResult = await pacsQuery_createAndWait(rawPath, `pull_${rawPath}`, pacsserver, (msg) => spinner.updateMessage(msg));
261
- spinner.stop();
262
- if (qResult) {
263
- console.log(chalk.gray(` → ${qResult.vfsPath}`));
264
- resolvedPaths.push(qResult.vfsPath);
265
- }
266
- else {
267
- console.error(chalk.red(`pull: Query failed for: ${rawPath}`));
268
- }
269
- }
270
- else {
271
- console.error(chalk.red(`pull: Not a PACS VFS path or valid query expression: ${rawPath}`));
272
- }
273
- }
274
- return resolvedPaths;
275
- }
276
- /**
277
- * Re-fires retrieves for series that pulled without LONK confirmation, up to
278
- * `retryMax` additional attempts, then permanently fails any still unconfirmed.
279
- *
280
- * @param allTasks - All pull tasks.
281
- * @param retryMax - Maximum retry attempts.
282
- * @param pacsserver - The PACS server identifier.
283
- * @param client - The connected ChRIS client.
284
- * @returns The number of additional retrieve-firing errors incurred.
285
- */
286
- async function pullRetryLoop(allTasks, retryMax, pacsserver, client) {
287
- let extraFiringErrors = 0;
288
- let retryCandidates = allTasks.filter((t) => t.status === 'pulled' && !t.lonkConfirmed);
289
- const pacsClient = client;
290
- for (let attempt = 1; attempt <= retryMax && retryCandidates.length > 0; attempt++) {
291
- await Promise.all(retryCandidates.map(async (t) => {
292
- const result = await series_cubePathGet(t.seriesUID, pacsClient, 1, 0);
293
- if (result) {
294
- t.lonkConfirmed = true;
295
- t.cubePathDir = result.folderPath;
296
- }
297
- }));
298
- retryCandidates = retryCandidates.filter((t) => !t.lonkConfirmed);
299
- if (retryCandidates.length === 0)
300
- break;
301
- console.log(chalk.yellow(`\nRetry ${attempt}/${retryMax} for ${retryCandidates.length} unconfirmed series...`));
302
- for (const t of retryCandidates) {
303
- t.status = 'pending';
304
- t.actualFiles = 0;
305
- t.lastProgressFiles = 0;
306
- t.lastProgressTime = Date.now();
307
- t.startTime = 0;
308
- t.lonkConfirmed = false;
309
- t.syntheticQueryId = null;
310
- t.retrieveId = null;
311
- }
312
- extraFiringErrors += await tasks_pullWatch(retryCandidates, pacsserver, client);
313
- retryCandidates = retryCandidates.filter((t) => t.status === 'pulled' && !t.lonkConfirmed);
314
- }
315
- for (const t of retryCandidates) {
316
- t.status = 'error';
317
- }
318
- return extraFiringErrors;
319
- }
320
- /**
321
- * Prints the pull summary and sets a non-zero exit code on any failure.
322
- *
323
- * @param allTasks - All pull tasks.
324
- * @param totalFiringErrors - Count of retrieve-firing errors across all attempts.
325
- */
326
- function pullSummary_print(allTasks, totalFiringErrors) {
327
- const pulled = allTasks.filter((t) => t.status === 'pulled').length;
328
- const totalCount = allTasks.length;
329
- const failures = allTasks.filter((t) => t.status !== 'pulled');
330
- if (failures.length === 0) {
331
- console.log(chalk.green(`\n✓ ${pulled}/${totalCount} series pulled successfully.`));
332
- }
333
- else {
334
- console.log(chalk.yellow(`\n⚠ ${pulled}/${totalCount} series complete.`));
335
- for (const f of failures) {
336
- console.log(chalk.red(` ✗ ${f.label} [${f.status.toUpperCase()}]`));
337
- }
338
- process.exitCode = 1;
339
- }
340
- if (totalFiringErrors > 0) {
341
- console.log(chalk.red(` ${totalFiringErrors} retrieve(s) failed to start.`));
342
- process.exitCode = 1;
343
- }
344
- }
345
- /**
346
- * Pulls one or more `/net/pacs/queries/...` VFS paths into ChRIS storage.
347
- *
348
- * Blocking by default: shows per-series MultiBar progress via LONK WebSocket,
349
- * exits non-zero on partial failure.
350
- * With `--nowait`: fires retrieves and prints `<seriesUID> <retrieveId>` per line, then returns.
351
- * With `--retry N`: re-fires retrieves for [NO LONK] series up to N additional times.
352
- *
353
- * @param args - Command arguments (VFS paths, optional flags).
354
- * @example
355
- * pull /net/pacs/queries/42_AccessionNumber:12345678
356
- * pull --retry 3 /net/pacs/queries/42_AccessionNumber:12345678/Study_1.2.3_US-Hips
357
- */
358
- export async function builtin_pull(args) {
359
- if (args_checkHasHelpFlag(args, 'pull')) {
360
- help_show('pull');
361
- return;
362
- }
363
- const { nowait, retryMax, paths } = pullArgs_parse(args);
364
- if (paths.length === 0) {
365
- console.error(chalk.red('pull: No paths specified. Usage: pull [--nowait] [--retry N] <vfs-path> [...]'));
366
- process.exitCode = 1;
367
- return;
368
- }
369
- const pacsIdentifier = await pacsServer_resolve();
370
- if (!pacsIdentifier) {
371
- console.error(chalk.red('pull: No PACS server available. Set one with: pacs connect <id>'));
372
- process.exitCode = 1;
373
- return;
374
- }
375
- const pacsserver = pacsIdentifier;
376
- const resolvedPaths = await paths_resolveToVfs(paths, pacsserver);
377
- const allTasks = [];
378
- for (const p of resolvedPaths) {
379
- const tasks = await path_seriesCollect(p, pacsIdentifier);
380
- if (tasks.length === 0) {
381
- console.error(chalk.yellow(`pull: No series found under: ${p}`));
382
- }
383
- allTasks.push(...tasks);
384
- }
385
- if (allTasks.length === 0) {
386
- console.error(chalk.red('pull: No series to retrieve.'));
387
- process.exitCode = 1;
388
- return;
389
- }
390
- const client = await session.connection.client_get();
391
- if (!client) {
392
- console.error(chalk.red('pull: Not connected to ChRIS.'));
393
- process.exitCode = 1;
394
- return;
395
- }
396
- // --nowait: fire retrieves and exit without watching
397
- if (nowait) {
398
- for (const t of allTasks) {
399
- await task_fire(t, pacsserver);
400
- if (t.retrieveId !== null) {
401
- console.log(`${t.seriesUID} ${t.retrieveId}`);
402
- }
403
- else {
404
- console.log(`${t.seriesUID} ERROR`);
405
- process.exitCode = 1;
406
- }
407
- }
408
- return;
409
- }
410
- let totalFiringErrors = await tasks_pullWatch(allTasks, pacsserver, client);
411
- totalFiringErrors += await pullRetryLoop(allTasks, retryMax, pacsserver, client);
412
- pullSummary_print(allTasks, totalFiringErrors);
413
- // Report CUBE paths via cubepath; --retry handles pacsseries DB lag post-pull
414
- await builtin_cubepath([...resolvedPaths, '--retry']);
415
- console.log(chalk.gray('Detached — use `pacsretrieve report <queryId>` to verify.'));
416
- }
417
- //# sourceMappingURL=pull.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../src/builtins/fs/pull.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Prints the current working directory in the ChRIS filesystem context.
3
- *
4
- * @param args - Command arguments (--title flag supported).
5
- * @returns A Promise that resolves when the directory is printed.
6
- */
7
- export declare function builtin_pwd(args?: string[]): Promise<void>;
@@ -1,75 +0,0 @@
1
- /**
2
- * @file Builtin pwd command.
3
- * Prints the current working directory.
4
- */
5
- import { session } from '../../session/index.js';
6
- import { feeds_list, pluginInstances_list } from '@fnndsc/salsa';
7
- /**
8
- * Prints the current working directory in the ChRIS filesystem context.
9
- *
10
- * @param args - Command arguments (--title flag supported).
11
- * @returns A Promise that resolves when the directory is printed.
12
- */
13
- export async function builtin_pwd(args = []) {
14
- const showTitles = args.includes('--title');
15
- const cwd = await session.getCWD();
16
- if (!showTitles) {
17
- console.log(cwd);
18
- return;
19
- }
20
- // Replace feed and plugin patterns with titles
21
- const titlePath = await path_withTitles(cwd);
22
- console.log(titlePath);
23
- }
24
- /**
25
- * Replaces feed_XXXX and pl-<name>_XXXX patterns in a path with their titles.
26
- *
27
- * @param path - The path to process.
28
- * @returns The path with titles replacing directory names.
29
- */
30
- async function path_withTitles(path) {
31
- const parts = path.split('/');
32
- const replacedParts = await Promise.all(parts.map(async (part) => {
33
- // Pattern 1: feed_XXXX
34
- const feedMatch = part.match(/^feed_(\d+)$/);
35
- if (feedMatch) {
36
- const feedId = parseInt(feedMatch[1], 10);
37
- try {
38
- const feedData = await feeds_list({ id: feedId, limit: 1 });
39
- if (feedData && feedData.tableData && feedData.tableData.length > 0) {
40
- const feed = feedData.tableData[0];
41
- if (feed && typeof feed.name === 'string') {
42
- return feed.name;
43
- }
44
- }
45
- }
46
- catch (e) {
47
- // Silently ignore errors
48
- }
49
- return part;
50
- }
51
- // Pattern 2: pl-<name>_XXXX
52
- const pluginMatch = part.match(/^(pl-.+)_(\d+)$/);
53
- if (pluginMatch) {
54
- const pluginInstanceId = parseInt(pluginMatch[2], 10);
55
- try {
56
- const instanceData = await pluginInstances_list({ id: pluginInstanceId, limit: 1 });
57
- if (instanceData && instanceData.tableData && instanceData.tableData.length > 0) {
58
- const instance = instanceData.tableData[0];
59
- if (instance) {
60
- const pluginName = typeof instance.plugin_name === 'string' ? instance.plugin_name : '';
61
- const pluginVersion = typeof instance.plugin_version === 'string' ? instance.plugin_version : '';
62
- return pluginVersion ? `${pluginName} v${pluginVersion}` : pluginName;
63
- }
64
- }
65
- }
66
- catch (e) {
67
- // Silently ignore errors
68
- }
69
- return part;
70
- }
71
- return part; // Return unchanged if no match
72
- }));
73
- return replacedParts.join('/');
74
- }
75
- //# sourceMappingURL=pwd.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pwd.js","sourceRoot":"","sources":["../../../src/builtins/fs/pwd.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- /**
2
- * Parsed `rm` arguments: flags plus the resolved list of path operands.
3
- */
4
- export interface RmArgs {
5
- recursive: boolean;
6
- force: boolean;
7
- interactive: boolean;
8
- paths: string[];
9
- }
10
- /**
11
- * Parses `rm` arguments, supporting combined short flags (`-rf`, `-rfi`) and the
12
- * `--` end-of-options separator.
13
- *
14
- * @param args - Raw command arguments.
15
- * @returns The parsed flags and path operands.
16
- */
17
- export declare function rmArgs_parse(args: string[]): RmArgs;
18
- /**
19
- * Formats the multi-target removal summary line.
20
- *
21
- * @param successCount - Number of items removed successfully.
22
- * @param failCount - Number of items that failed to remove.
23
- * @returns The summary string, or null if there is nothing to summarise.
24
- */
25
- export declare function rmSummary_format(successCount: number, failCount: number): string | null;
26
- /**
27
- * Removes one or more files or directories.
28
- *
29
- * @param args - Command line arguments (flags and paths).
30
- */
31
- export declare function builtin_rm(args: string[]): Promise<void>;