@fnndsc/brasa 0.56.1 → 0.56.3

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 (361) hide show
  1. package/dist/buildinfo.json +1 -1
  2. package/dist/builtins/berth/berth.d.ts +90 -3
  3. package/dist/builtins/berth/berth.js +129 -76
  4. package/dist/builtins/berth/berth.js.map +1 -1
  5. package/dist/builtins/berth/berthClose.d.ts +25 -6
  6. package/dist/builtins/berth/berthClose.js +8 -64
  7. package/dist/builtins/berth/berthClose.js.map +1 -1
  8. package/dist/builtins/berth/berthCube.d.ts +3 -2
  9. package/dist/builtins/berth/berthCube.js +9 -16
  10. package/dist/builtins/berth/berthCube.js.map +1 -1
  11. package/dist/builtins/berth/berthProcesses.js +33 -3
  12. package/dist/builtins/berth/berthProcesses.js.map +1 -1
  13. package/dist/builtins/debug.d.ts +24 -3
  14. package/dist/builtins/debug.js +66 -13
  15. package/dist/builtins/debug.js.map +1 -1
  16. package/dist/builtins/fs/acl.args.d.ts +5 -38
  17. package/dist/builtins/fs/acl.args.js +6 -72
  18. package/dist/builtins/fs/acl.args.js.map +1 -1
  19. package/dist/builtins/fs/acl.d.ts +100 -10
  20. package/dist/builtins/fs/acl.js +222 -68
  21. package/dist/builtins/fs/acl.js.map +1 -1
  22. package/dist/builtins/fs/cat.args.d.ts +14 -15
  23. package/dist/builtins/fs/cat.args.js +13 -40
  24. package/dist/builtins/fs/cat.args.js.map +1 -1
  25. package/dist/builtins/fs/cat.d.ts +40 -3
  26. package/dist/builtins/fs/cat.js +92 -13
  27. package/dist/builtins/fs/cat.js.map +1 -1
  28. package/dist/builtins/fs/cd.d.ts +24 -6
  29. package/dist/builtins/fs/cd.js +71 -18
  30. package/dist/builtins/fs/cd.js.map +1 -1
  31. package/dist/builtins/fs/configWrite.d.ts +24 -8
  32. package/dist/builtins/fs/configWrite.js +77 -36
  33. package/dist/builtins/fs/configWrite.js.map +1 -1
  34. package/dist/builtins/fs/cp.d.ts +39 -4
  35. package/dist/builtins/fs/cp.js +122 -56
  36. package/dist/builtins/fs/cp.js.map +1 -1
  37. package/dist/builtins/fs/download.d.ts +31 -4
  38. package/dist/builtins/fs/download.js +75 -38
  39. package/dist/builtins/fs/download.js.map +1 -1
  40. package/dist/builtins/fs/du.d.ts +59 -33
  41. package/dist/builtins/fs/du.js +111 -79
  42. package/dist/builtins/fs/du.js.map +1 -1
  43. package/dist/builtins/fs/edit.d.ts +19 -4
  44. package/dist/builtins/fs/edit.js +77 -16
  45. package/dist/builtins/fs/edit.js.map +1 -1
  46. package/dist/builtins/fs/find.d.ts +25 -0
  47. package/dist/builtins/fs/find.js +76 -5
  48. package/dist/builtins/fs/find.js.map +1 -1
  49. package/dist/builtins/fs/ls.d.ts +69 -4
  50. package/dist/builtins/fs/ls.js +84 -45
  51. package/dist/builtins/fs/ls.js.map +1 -1
  52. package/dist/builtins/fs/mkdir.d.ts +28 -18
  53. package/dist/builtins/fs/mkdir.js +95 -66
  54. package/dist/builtins/fs/mkdir.js.map +1 -1
  55. package/dist/builtins/fs/mv.d.ts +34 -4
  56. package/dist/builtins/fs/mv.js +129 -64
  57. package/dist/builtins/fs/mv.js.map +1 -1
  58. package/dist/builtins/fs/pull.args.d.ts +56 -17
  59. package/dist/builtins/fs/pull.args.js +16 -66
  60. package/dist/builtins/fs/pull.args.js.map +1 -1
  61. package/dist/builtins/fs/pull.d.ts +62 -0
  62. package/dist/builtins/fs/pull.js +123 -31
  63. package/dist/builtins/fs/pull.js.map +1 -1
  64. package/dist/builtins/fs/pwd.d.ts +19 -5
  65. package/dist/builtins/fs/pwd.js +62 -8
  66. package/dist/builtins/fs/pwd.js.map +1 -1
  67. package/dist/builtins/fs/rm.d.ts +58 -21
  68. package/dist/builtins/fs/rm.js +99 -82
  69. package/dist/builtins/fs/rm.js.map +1 -1
  70. package/dist/builtins/fs/rmdir.d.ts +29 -11
  71. package/dist/builtins/fs/rmdir.js +87 -36
  72. package/dist/builtins/fs/rmdir.js.map +1 -1
  73. package/dist/builtins/fs/touch.d.ts +44 -9
  74. package/dist/builtins/fs/touch.js +91 -27
  75. package/dist/builtins/fs/touch.js.map +1 -1
  76. package/dist/builtins/fs/tree.d.ts +36 -9
  77. package/dist/builtins/fs/tree.js +126 -36
  78. package/dist/builtins/fs/tree.js.map +1 -1
  79. package/dist/builtins/fs/upload.d.ts +22 -3
  80. package/dist/builtins/fs/upload.js +82 -14
  81. package/dist/builtins/fs/upload.js.map +1 -1
  82. package/dist/builtins/fs/xattr.args.d.ts +12 -33
  83. package/dist/builtins/fs/xattr.args.js +17 -95
  84. package/dist/builtins/fs/xattr.args.js.map +1 -1
  85. package/dist/builtins/fs/xattr.d.ts +98 -8
  86. package/dist/builtins/fs/xattr.js +163 -24
  87. package/dist/builtins/fs/xattr.js.map +1 -1
  88. package/dist/builtins/games/bytes.d.ts +201 -5
  89. package/dist/builtins/games/bytes.js +255 -54
  90. package/dist/builtins/games/bytes.js.map +1 -1
  91. package/dist/builtins/games/chimes.d.ts +180 -3
  92. package/dist/builtins/games/chimes.js +203 -26
  93. package/dist/builtins/games/chimes.js.map +1 -1
  94. package/dist/builtins/games/chrislab.d.ts +101 -3
  95. package/dist/builtins/games/chrislab.js +117 -17
  96. package/dist/builtins/games/chrislab.js.map +1 -1
  97. package/dist/builtins/games/cowsay.d.ts +93 -2
  98. package/dist/builtins/games/cowsay.js +90 -31
  99. package/dist/builtins/games/cowsay.js.map +1 -1
  100. package/dist/builtins/games/figlet.d.ts +70 -2
  101. package/dist/builtins/games/figlet.js +83 -6
  102. package/dist/builtins/games/figlet.js.map +1 -1
  103. package/dist/builtins/games/lab.d.ts +104 -5
  104. package/dist/builtins/games/lab.js +144 -6
  105. package/dist/builtins/games/lab.js.map +1 -1
  106. package/dist/builtins/games/lolcat.d.ts +61 -1
  107. package/dist/builtins/games/lolcat.js +59 -24
  108. package/dist/builtins/games/lolcat.js.map +1 -1
  109. package/dist/builtins/games/morse.d.ts +36 -1
  110. package/dist/builtins/games/morse.js +50 -2
  111. package/dist/builtins/games/morse.js.map +1 -1
  112. package/dist/builtins/games/numbers.d.ts +241 -5
  113. package/dist/builtins/games/numbers.js +298 -23
  114. package/dist/builtins/games/numbers.js.map +1 -1
  115. package/dist/builtins/games/play.d.ts +96 -6
  116. package/dist/builtins/games/play.js +137 -6
  117. package/dist/builtins/games/play.js.map +1 -1
  118. package/dist/builtins/games/qr.d.ts +40 -1
  119. package/dist/builtins/games/qr.js +51 -2
  120. package/dist/builtins/games/qr.js.map +1 -1
  121. package/dist/builtins/games/show.d.ts +131 -6
  122. package/dist/builtins/games/show.js +208 -20
  123. package/dist/builtins/games/show.js.map +1 -1
  124. package/dist/builtins/games/sky.d.ts +178 -4
  125. package/dist/builtins/games/sky.js +228 -12
  126. package/dist/builtins/games/sky.js.map +1 -1
  127. package/dist/builtins/games/text.d.ts +258 -7
  128. package/dist/builtins/games/text.js +310 -29
  129. package/dist/builtins/games/text.js.map +1 -1
  130. package/dist/builtins/games/trek.d.ts +67 -3
  131. package/dist/builtins/games/trek.js +63 -10
  132. package/dist/builtins/games/trek.js.map +1 -1
  133. package/dist/builtins/games/wtf.d.ts +58 -1
  134. package/dist/builtins/games/wtf.js +67 -6
  135. package/dist/builtins/games/wtf.js.map +1 -1
  136. package/dist/builtins/help.d.ts +41 -3
  137. package/dist/builtins/help.js +92 -796
  138. package/dist/builtins/help.js.map +1 -1
  139. package/dist/builtins/net/connect.d.ts +36 -3
  140. package/dist/builtins/net/connect.js +84 -26
  141. package/dist/builtins/net/connect.js.map +1 -1
  142. package/dist/builtins/net/cubepath.d.ts +49 -5
  143. package/dist/builtins/net/cubepath.js +69 -27
  144. package/dist/builtins/net/cubepath.js.map +1 -1
  145. package/dist/builtins/net/logout.d.ts +13 -4
  146. package/dist/builtins/net/logout.js +49 -3
  147. package/dist/builtins/net/logout.js.map +1 -1
  148. package/dist/builtins/net/netstat.d.ts +29 -4
  149. package/dist/builtins/net/netstat.js +64 -23
  150. package/dist/builtins/net/netstat.js.map +1 -1
  151. package/dist/builtins/net/pacs.d.ts +169 -15
  152. package/dist/builtins/net/pacs.js +92 -33
  153. package/dist/builtins/net/pacs.js.map +1 -1
  154. package/dist/builtins/net/query.args.d.ts +95 -0
  155. package/dist/builtins/net/query.args.js +26 -0
  156. package/dist/builtins/net/query.args.js.map +1 -0
  157. package/dist/builtins/net/query.d.ts +98 -5
  158. package/dist/builtins/net/query.js +89 -83
  159. package/dist/builtins/net/query.js.map +1 -1
  160. package/dist/builtins/net/status.d.ts +5 -3
  161. package/dist/builtins/net/status.js +5 -12
  162. package/dist/builtins/net/status.js.map +1 -1
  163. package/dist/builtins/parametersofplugin.d.ts +82 -3
  164. package/dist/builtins/parametersofplugin.js +79 -23
  165. package/dist/builtins/parametersofplugin.js.map +1 -1
  166. package/dist/builtins/proc.d.ts +210 -3
  167. package/dist/builtins/proc.js +210 -119
  168. package/dist/builtins/proc.js.map +1 -1
  169. package/dist/builtins/res/compute.d.ts +67 -3
  170. package/dist/builtins/res/compute.js +121 -35
  171. package/dist/builtins/res/compute.js.map +1 -1
  172. package/dist/builtins/res/dicom.d.ts +55 -7
  173. package/dist/builtins/res/dicom.js +86 -52
  174. package/dist/builtins/res/dicom.js.map +1 -1
  175. package/dist/builtins/res/expect.d.ts +52 -3
  176. package/dist/builtins/res/expect.js +92 -29
  177. package/dist/builtins/res/expect.js.map +1 -1
  178. package/dist/builtins/res/feed.d.ts +475 -3
  179. package/dist/builtins/res/feed.js +253 -158
  180. package/dist/builtins/res/feed.js.map +1 -1
  181. package/dist/builtins/res/files.d.ts +517 -3
  182. package/dist/builtins/res/files.js +124 -44
  183. package/dist/builtins/res/files.js.map +1 -1
  184. package/dist/builtins/res/gather.d.ts +113 -3
  185. package/dist/builtins/res/gather.js +153 -44
  186. package/dist/builtins/res/gather.js.map +1 -1
  187. package/dist/builtins/res/gather.process.d.ts +27 -19
  188. package/dist/builtins/res/gather.process.js +29 -59
  189. package/dist/builtins/res/gather.process.js.map +1 -1
  190. package/dist/builtins/res/group.d.ts +284 -3
  191. package/dist/builtins/res/group.js +147 -76
  192. package/dist/builtins/res/group.js.map +1 -1
  193. package/dist/builtins/res/image.d.ts +30 -2
  194. package/dist/builtins/res/image.js +62 -10
  195. package/dist/builtins/res/image.js.map +1 -1
  196. package/dist/builtins/res/play.d.ts +71 -9
  197. package/dist/builtins/res/play.js +124 -82
  198. package/dist/builtins/res/play.js.map +1 -1
  199. package/dist/builtins/res/plugininstance.d.ts +307 -2
  200. package/dist/builtins/res/plugininstance.js +122 -50
  201. package/dist/builtins/res/plugininstance.js.map +1 -1
  202. package/dist/builtins/res/pluginmeta.d.ts +244 -2
  203. package/dist/builtins/res/pluginmeta.js +98 -40
  204. package/dist/builtins/res/pluginmeta.js.map +1 -1
  205. package/dist/builtins/res/record.d.ts +37 -3
  206. package/dist/builtins/res/record.js +127 -57
  207. package/dist/builtins/res/record.js.map +1 -1
  208. package/dist/builtins/res/resourceList.d.ts +136 -0
  209. package/dist/builtins/res/resourceList.js +51 -0
  210. package/dist/builtins/res/resourceList.js.map +1 -0
  211. package/dist/builtins/res/tag.d.ts +244 -3
  212. package/dist/builtins/res/tag.js +97 -41
  213. package/dist/builtins/res/tag.js.map +1 -1
  214. package/dist/builtins/res/user.d.ts +122 -3
  215. package/dist/builtins/res/user.js +83 -21
  216. package/dist/builtins/res/user.js.map +1 -1
  217. package/dist/builtins/res/workflow.d.ts +244 -2
  218. package/dist/builtins/res/workflow.js +97 -40
  219. package/dist/builtins/res/workflow.js.map +1 -1
  220. package/dist/builtins/store.d.ts +85 -3
  221. package/dist/builtins/store.js +135 -68
  222. package/dist/builtins/store.js.map +1 -1
  223. package/dist/builtins/sys/apropos.d.ts +80 -5
  224. package/dist/builtins/sys/apropos.js +121 -15
  225. package/dist/builtins/sys/apropos.js.map +1 -1
  226. package/dist/builtins/sys/cal.d.ts +44 -5
  227. package/dist/builtins/sys/cal.js +57 -10
  228. package/dist/builtins/sys/cal.js.map +1 -1
  229. package/dist/builtins/sys/command.d.ts +20 -0
  230. package/dist/builtins/sys/command.js +31 -0
  231. package/dist/builtins/sys/command.js.map +1 -1
  232. package/dist/builtins/sys/context.d.ts +13 -3
  233. package/dist/builtins/sys/context.js +51 -4
  234. package/dist/builtins/sys/context.js.map +1 -1
  235. package/dist/builtins/sys/date.d.ts +56 -5
  236. package/dist/builtins/sys/date.js +63 -9
  237. package/dist/builtins/sys/date.js.map +1 -1
  238. package/dist/builtins/sys/echo.d.ts +63 -2
  239. package/dist/builtins/sys/echo.js +87 -8
  240. package/dist/builtins/sys/echo.js.map +1 -1
  241. package/dist/builtins/sys/fortune.d.ts +27 -2
  242. package/dist/builtins/sys/fortune.js +44 -2
  243. package/dist/builtins/sys/fortune.js.map +1 -1
  244. package/dist/builtins/sys/grep.d.ts +245 -11
  245. package/dist/builtins/sys/grep.js +418 -131
  246. package/dist/builtins/sys/grep.js.map +1 -1
  247. package/dist/builtins/sys/joblets.d.ts +66 -7
  248. package/dist/builtins/sys/joblets.js +101 -14
  249. package/dist/builtins/sys/joblets.js.map +1 -1
  250. package/dist/builtins/sys/motd.d.ts +37 -3
  251. package/dist/builtins/sys/motd.js +49 -8
  252. package/dist/builtins/sys/motd.js.map +1 -1
  253. package/dist/builtins/sys/notes.d.ts +75 -3
  254. package/dist/builtins/sys/notes.js +90 -29
  255. package/dist/builtins/sys/notes.js.map +1 -1
  256. package/dist/builtins/sys/physicalmode.d.ts +24 -3
  257. package/dist/builtins/sys/physicalmode.js +68 -14
  258. package/dist/builtins/sys/physicalmode.js.map +1 -1
  259. package/dist/builtins/sys/tasks.d.ts +74 -5
  260. package/dist/builtins/sys/tasks.js +102 -14
  261. package/dist/builtins/sys/tasks.js.map +1 -1
  262. package/dist/builtins/sys/textFilters.d.ts +673 -41
  263. package/dist/builtins/sys/textFilters.js +719 -264
  264. package/dist/builtins/sys/textFilters.js.map +1 -1
  265. package/dist/builtins/sys/timing.d.ts +24 -3
  266. package/dist/builtins/sys/timing.js +67 -14
  267. package/dist/builtins/sys/timing.js.map +1 -1
  268. package/dist/builtins/sys/variables.d.ts +70 -4
  269. package/dist/builtins/sys/variables.js +103 -31
  270. package/dist/builtins/sys/variables.js.map +1 -1
  271. package/dist/builtins/sys/version.d.ts +27 -2
  272. package/dist/builtins/sys/version.js +48 -3
  273. package/dist/builtins/sys/version.js.map +1 -1
  274. package/dist/builtins/sys/weather.d.ts +92 -15
  275. package/dist/builtins/sys/weather.js +71 -45
  276. package/dist/builtins/sys/weather.js.map +1 -1
  277. package/dist/builtins/sys/whoami.d.ts +38 -18
  278. package/dist/builtins/sys/whoami.js +112 -8
  279. package/dist/builtins/sys/whoami.js.map +1 -1
  280. package/dist/builtins/utils.d.ts +1 -38
  281. package/dist/builtins/utils.js +1 -87
  282. package/dist/builtins/utils.js.map +1 -1
  283. package/dist/chris/backend.js +2 -0
  284. package/dist/chris/backend.js.map +1 -1
  285. package/dist/chris/chrisCommands.js +62 -159
  286. package/dist/chris/chrisCommands.js.map +1 -1
  287. package/dist/chris/commandFallback.d.ts +12 -0
  288. package/dist/chris/commandFallback.js +47 -0
  289. package/dist/chris/commandFallback.js.map +1 -1
  290. package/dist/chris/files.js +24 -85
  291. package/dist/chris/files.js.map +1 -1
  292. package/dist/chris/filesystem.js +7 -5
  293. package/dist/chris/filesystem.js.map +1 -1
  294. package/dist/chris/help.js +0 -1082
  295. package/dist/chris/help.js.map +1 -1
  296. package/dist/chris/kinds.d.ts +30 -0
  297. package/dist/chris/kinds.js +154 -0
  298. package/dist/chris/kinds.js.map +1 -0
  299. package/dist/chris/mounts.d.ts +4 -4
  300. package/dist/chris/mounts.js +9 -16
  301. package/dist/chris/mounts.js.map +1 -1
  302. package/dist/chris/navigation.d.ts +2 -3
  303. package/dist/chris/navigation.js +6 -20
  304. package/dist/chris/navigation.js.map +1 -1
  305. package/dist/chris/pacsResources.d.ts +259 -0
  306. package/dist/chris/pacsResources.js +168 -0
  307. package/dist/chris/pacsResources.js.map +1 -0
  308. package/dist/chris/promptContext.d.ts +6 -0
  309. package/dist/chris/promptContext.js +3 -1
  310. package/dist/chris/promptContext.js.map +1 -1
  311. package/dist/core/argumentKinds.d.ts +107 -0
  312. package/dist/core/argumentKinds.js +223 -0
  313. package/dist/core/argumentKinds.js.map +1 -0
  314. package/dist/core/backend.d.ts +4 -1
  315. package/dist/core/backend.js.map +1 -1
  316. package/dist/core/commandDeclaration.d.ts +453 -0
  317. package/dist/core/commandDeclaration.js +52 -0
  318. package/dist/core/commandDeclaration.js.map +1 -0
  319. package/dist/core/commandParse.d.ts +64 -0
  320. package/dist/core/commandParse.js +468 -0
  321. package/dist/core/commandParse.js.map +1 -0
  322. package/dist/core/commandRegistry.d.ts +37 -0
  323. package/dist/core/commandRegistry.js +100 -3
  324. package/dist/core/commandRegistry.js.map +1 -1
  325. package/dist/core/commandSchema.d.ts +32 -0
  326. package/dist/core/commandSchema.js +117 -0
  327. package/dist/core/commandSchema.js.map +1 -0
  328. package/dist/core/commandUsage.d.ts +62 -0
  329. package/dist/core/commandUsage.js +247 -0
  330. package/dist/core/commandUsage.js.map +1 -0
  331. package/dist/core/coreCommands.js +66 -214
  332. package/dist/core/coreCommands.js.map +1 -1
  333. package/dist/core/dispatch.js +15 -8
  334. package/dist/core/dispatch.js.map +1 -1
  335. package/dist/core/paths.d.ts +51 -0
  336. package/dist/core/paths.js +86 -2
  337. package/dist/core/paths.js.map +1 -1
  338. package/dist/core/preprocess.d.ts +10 -9
  339. package/dist/core/preprocess.js +10 -20
  340. package/dist/core/preprocess.js.map +1 -1
  341. package/dist/core/warmupFailures.d.ts +34 -2
  342. package/dist/core/warmupFailures.js +43 -2
  343. package/dist/core/warmupFailures.js.map +1 -1
  344. package/dist/lib/completer/cfsPaths.d.ts +14 -0
  345. package/dist/lib/completer/cfsPaths.js +91 -0
  346. package/dist/lib/completer/cfsPaths.js.map +1 -0
  347. package/dist/lib/completer/declared.d.ts +15 -0
  348. package/dist/lib/completer/declared.js +189 -0
  349. package/dist/lib/completer/declared.js.map +1 -0
  350. package/dist/lib/completer/index.js +33 -79
  351. package/dist/lib/completer/index.js.map +1 -1
  352. package/dist/lib/parser.d.ts +5 -8
  353. package/dist/lib/parser.js +2 -11
  354. package/dist/lib/parser.js.map +1 -1
  355. package/dist/lib/vfs/vfs.d.ts +2 -1
  356. package/dist/lib/vfs/vfs.js +9 -6
  357. package/dist/lib/vfs/vfs.js.map +1 -1
  358. package/dist/lib/wildcard.js +2 -3
  359. package/dist/lib/wildcard.js.map +1 -1
  360. package/dist/notes.json +1 -1
  361. package/package.json +6 -5
@@ -1,14 +1,30 @@
1
1
  /**
2
- * @file Builtin download command.
3
- * Downloads files from ChRIS to the local filesystem with progress.
2
+ * @file `download`: ChRIS files and folders to the local filesystem, with
3
+ * progress; under a daemon, handed to the surface instead.
4
+ *
5
+ * Declared in one record (`downloadCommand`): a CFS path operand that globs
6
+ * and a host path operand on one line, never globbed.
7
+ *
8
+ * Key components:
9
+ * - downloadCommand: the declaration.
10
+ * - builtin_download: the declaration run over words already split.
11
+ *
12
+ * Typical usage:
13
+ * ```ts
14
+ * await builtin_download(['/home/chris/uploads/a.nii', './data/']);
15
+ * ```
16
+ *
17
+ * Dependencies: chili's transfer, salsa's file listing, the session's surface.
18
+ *
19
+ * @module
4
20
  */
5
21
  import path from 'path';
6
22
  import chalk from 'chalk';
7
23
  import { files_downloadWithProgress as chefs_download_cmd, files_downloadManyWithProgress as chefs_downloadMany_cmd, bytes_format } from '@fnndsc/chili/commands/fs/download.js';
8
24
  import { sink_get } from '../../core/sink.js';
9
- import { shellArguments_pathnameExpanded } from '../../lib/parser.js';
10
- import { path_resolve } from '../utils.js';
11
- import { vfsDispatcher_get } from '../../core/filesystem.js';
25
+ import { command_declare } from '../../core/commandDeclaration.js';
26
+ import { declaredCommand_run } from '../../core/commandParse.js';
27
+ import { storePath_resolve } from '../utils.js';
12
28
  import { surface_get } from '../../core/surface.js';
13
29
  import { repl_confirm } from '../../core/question.js';
14
30
  import { files_path_isDirectory, files_listRecursive } from '@fnndsc/salsa';
@@ -16,25 +32,16 @@ import { directory_archive } from './archive.js';
16
32
  import { envelope_ok, envelope_error } from '@fnndsc/menu';
17
33
  import { errorStack } from '@fnndsc/fond';
18
34
  import { exitCode_set } from '../../core/handlerRun.js';
19
- /** A `/proc/jobs` path at or under a job's `data` link: the link, and what follows it. */
20
- const PROC_DATA_PATH = /^(\/proc\/jobs\/feed_\d+(?:\/[^/]+_\d+)+\/data)(\/.*)?$/;
21
35
  /**
22
- * A source as the transfer reads it: a CFS path. A `/proc/jobs/.../data`
23
- * path, which `ls` and `cd` enter as the run's output, resolves through the
24
- * same link to that output (#1364); anything else is the path as resolved.
36
+ * A source as the transfer reads it: where the store keeps it, resolved as
37
+ * every reader resolves a path (a `/proc/jobs/.../data` path through the
38
+ * job's link to its output, #1364; the store's links at any depth).
25
39
  *
26
40
  * @param source - The source as typed.
27
- * @returns The CFS path.
41
+ * @returns The store path.
28
42
  */
29
43
  async function source_resolve(source) {
30
- const resolved = await path_resolve(source);
31
- const link = resolved.match(PROC_DATA_PATH);
32
- if (link === null)
33
- return resolved;
34
- const target = await vfsDispatcher_get().linkTarget_resolve(link[1]);
35
- if (!target.ok)
36
- return resolved;
37
- return `${target.value}${link[2] ?? ''}`;
44
+ return storePath_resolve(source);
38
45
  }
39
46
  /**
40
47
  * Asks the issuing surface to confirm a local download overwrite or merge.
@@ -143,29 +150,59 @@ async function surfaceDownload_run(surface, sourceArgs, destination) {
143
150
  rendered += '\n';
144
151
  return failed.length === 0 ? envelope_ok(rendered) : envelope_error(rendered, undefined, '');
145
152
  }
153
+ /** What a `download` line may hold: ChRIS paths (a wildcard matches them), then one place on this machine. */
154
+ const DOWNLOAD_GRAMMAR = {
155
+ operands: [
156
+ { name: 'source', kind: 'cfsPath', repeat: true, glob: true, summary: 'What to download: a ChRIS file or folder; a wildcard matches paths' },
157
+ { name: 'destination', kind: 'hostPath', summary: "Where it goes on this machine's disk; several sources go into one folder" },
158
+ ],
159
+ options: {
160
+ force: { short: 'f', long: 'force', summary: 'Overwrite local paths that exist' },
161
+ },
162
+ };
146
163
  /**
147
- * Downloads a remote ChRIS file or directory to the local filesystem, or hands
148
- * it to the surface when the engine's disk is not the operator's.
164
+ * `download [-f] <source…> <destination>`: the declaration.
149
165
  *
150
- * @param args - [remotePathOrGlob, localPath] plus optional -f/--force to overwrite.
151
- * @returns An envelope carrying the download summary.
166
+ * @example
167
+ * ```ts
168
+ * commands_register({ declarations: [downloadCommand] }, 'backend');
169
+ * ```
170
+ */
171
+ export const downloadCommand = command_declare({
172
+ name: 'download',
173
+ grammar: DOWNLOAD_GRAMMAR,
174
+ help: {
175
+ summary: 'Download ChRIS files or folders to this machine',
176
+ description: 'Download a ChRIS file, folder, or the paths a wildcard matches to the local filesystem with progress tracking: files, ETA, bytes transferred. Several sources, typed or matched, go together into one folder. Under a daemon the files are handed to the surface, which puts them on its own disk or in a browser\'s downloads.',
177
+ category: 'Files',
178
+ examples: [
179
+ 'download /home/user/data ./data',
180
+ 'download /home/user/results/*.nii ./results/',
181
+ 'download /feeds/feed_123 ./downloads -f',
182
+ ],
183
+ },
184
+ handler: async (args) => download_run(args.operands.source, args.operands.destination, args.options.force, args.expanded.source),
185
+ });
186
+ /**
187
+ * `download` over words already split: the declaration's parse and handler.
188
+ *
189
+ * @param args - The words after `download`.
190
+ * @returns The download summary, or the refusal of a bad line.
152
191
  */
153
192
  export async function builtin_download(args) {
154
- const force = args.includes('-f') || args.includes('--force');
155
- const positionalIndexes = args.reduce((indexes, arg, index) => {
156
- if (arg !== '-f' && arg !== '--force')
157
- indexes.push(index);
158
- return indexes;
159
- }, []);
160
- const cleanArgs = positionalIndexes.map((index) => args[index]);
161
- if (cleanArgs.length < 2) {
162
- return envelope_ok(`${chalk.red('Usage: download <remote_path_or_glob> <local_path> [-f|--force]')}\n`);
163
- }
164
- const localPathArg = cleanArgs[cleanArgs.length - 1];
165
- const sourceArgs = cleanArgs.slice(0, -1);
166
- const sourceWasExpanded = positionalIndexes
167
- .slice(0, -1)
168
- .some((index) => shellArguments_pathnameExpanded(args, index));
193
+ return declaredCommand_run(downloadCommand, args);
194
+ }
195
+ /**
196
+ * Downloads remote ChRIS files or folders to the local filesystem, or hands
197
+ * them to the surface when the engine's disk is not the operator's.
198
+ *
199
+ * @param sourceArgs - The ChRIS paths, as typed or matched.
200
+ * @param localPathArg - Where they go.
201
+ * @param force - Overwrite local paths that exist.
202
+ * @param sourceWasExpanded - The sources came from a wildcard, so even one goes into a folder.
203
+ * @returns An envelope carrying the download summary.
204
+ */
205
+ async function download_run(sourceArgs, localPathArg, force, sourceWasExpanded) {
169
206
  // A path resolved here is a path on the *engine's* disk. That is the
170
207
  // operator's disk only when a local shell hosts the engine in its own
171
208
  // process; under a daemon it is a machine nobody attending the session is
@@ -1 +1 @@
1
- {"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/builtins/fs/download.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/builtins/fs/download.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import { ParsedArgs } from '../utils.js';
2
1
  import { type ScanRecord } from '@fnndsc/chili/path/pathCommand.js';
3
2
  import { type CommandEnvelope } from '@fnndsc/menu';
4
3
  /**
@@ -13,14 +12,67 @@ export interface DuOptions {
13
12
  maxDepth: number | undefined;
14
13
  }
15
14
  /**
16
- * Spells `-d N` and `-dN` as `--max-depth=N`, the one form the parser
17
- * takes a value for: a short flag is otherwise a switch, and the depth
18
- * read as a path to measure.
15
+ * `du [-hsacS] [-d <N>] [path…]`: the declaration.
19
16
  *
20
- * @param args - du's words.
21
- * @returns The words, the depth spelled long.
17
+ * @example
18
+ * ```ts
19
+ * commands_register({ declarations: [duCommand] }, 'backend');
20
+ * ```
22
21
  */
23
- export declare function depthOption_normalize(args: string[]): string[];
22
+ export declare const duCommand: import("../../core/commandDeclaration.js").CommandDeclaration<{
23
+ readonly operands: readonly [{
24
+ readonly name: "path";
25
+ readonly kind: "cfsPath";
26
+ readonly optional: true;
27
+ readonly repeat: true;
28
+ readonly glob: true;
29
+ readonly summary: "What to measure; the working directory when none is given";
30
+ }];
31
+ readonly options: {
32
+ readonly humanReadable: {
33
+ readonly short: "h";
34
+ readonly long: "human-readable";
35
+ readonly summary: "Print sizes in human readable format";
36
+ };
37
+ readonly summarize: {
38
+ readonly short: "s";
39
+ readonly long: "summarize";
40
+ readonly summary: "Display only total for each argument";
41
+ };
42
+ readonly all: {
43
+ readonly short: "a";
44
+ readonly long: "all";
45
+ readonly summary: "Show counts for all files, not just directories";
46
+ };
47
+ readonly total: {
48
+ readonly short: "c";
49
+ readonly long: "total";
50
+ readonly summary: "Produce a grand total";
51
+ };
52
+ readonly separateDirs: {
53
+ readonly short: "S";
54
+ readonly long: "separate-dirs";
55
+ readonly summary: "Do not include size of subdirectories";
56
+ };
57
+ readonly maxDepth: {
58
+ readonly short: "d";
59
+ readonly long: "max-depth";
60
+ readonly summary: "Print total only if N or fewer levels below";
61
+ readonly value: {
62
+ readonly name: "N";
63
+ readonly kind: "int";
64
+ readonly min: 0;
65
+ };
66
+ };
67
+ };
68
+ }>;
69
+ /**
70
+ * `du` over words already split: the declaration's parse and handler.
71
+ *
72
+ * @param args - The words after `du`.
73
+ * @returns The sizes, or the refusal of a bad line.
74
+ */
75
+ export declare function builtin_du(args: string[]): Promise<CommandEnvelope>;
24
76
  /**
25
77
  * Formats a byte count for `du` output: human-readable string or KB integer,
26
78
  * right-padded to 12 characters for column alignment.
@@ -30,13 +82,6 @@ export declare function depthOption_normalize(args: string[]): string[];
30
82
  * @returns Right-aligned size string.
31
83
  */
32
84
  export declare function duSize_format(bytes: number, humanReadable: boolean): string;
33
- /**
34
- * Extracts `du` flags from parsed command arguments.
35
- *
36
- * @param parsed - The parsed command arguments.
37
- * @returns The resolved du options.
38
- */
39
- export declare function duOptions_parse(parsed: ParsedArgs): DuOptions;
40
85
  /**
41
86
  * Accumulates per-directory sizes from a scan result, attributing each file's
42
87
  * size to its ancestor directories up to (and including) the target path.
@@ -47,22 +92,3 @@ export declare function duOptions_parse(parsed: ParsedArgs): DuOptions;
47
92
  * @returns A map of directory path to accumulated size.
48
93
  */
49
94
  export declare function dirSizes_compute(scanResult: ScanRecord, targetPath: string, opts: DuOptions): Map<string, number>;
50
- /**
51
- * Displays disk usage statistics for ChRIS filesystem directories.
52
- * Mimics standard Linux du command behavior and flags.
53
- * Uses chili's scan_do machinery for recursive filesystem traversal.
54
- *
55
- * @param args - Command line arguments (optional path and flags).
56
- * @returns A Promise that resolves when disk usage is displayed.
57
- *
58
- * @example
59
- * ```
60
- * du # Disk usage of current directory
61
- * du -h # Human-readable sizes
62
- * du -s /home/user/data # Summary only
63
- * du -a # Show all files, not just directories
64
- * du -c # Show grand total
65
- * du -d 2 # Max depth of 2 levels
66
- * ```
67
- */
68
- export declare function builtin_du(args: string[]): Promise<CommandEnvelope>;
@@ -1,49 +1,93 @@
1
1
  /**
2
- * @file Builtin du command.
3
- * Displays disk usage.
2
+ * @file `du`: how much of ChRIS's filesystem (CFS) each folder takes, as
3
+ * Linux du says it.
4
+ *
5
+ * Declared in one record (`duCommand`): paths that glob, and du's options;
6
+ * one it does not have is refused by name.
7
+ *
8
+ * Key components:
9
+ * - duCommand: the declaration.
10
+ * - builtin_du: the declaration run over words already split.
11
+ * - dirSizes_compute: each folder's size from a scan.
12
+ *
13
+ * Typical usage:
14
+ * ```ts
15
+ * await builtin_du(['-sh', '~/uploads']);
16
+ * ```
17
+ *
18
+ * Dependencies: chili's scan for the walk; the listing for what a path is.
19
+ *
20
+ * @module
4
21
  */
5
22
  import chalk from 'chalk';
6
23
  import path from 'path';
7
- import { commandArgs_process, optionsUnknown_refusal, path_resolve } from '../utils.js';
24
+ import { path_resolve, storePath_resolve } from '../utils.js';
8
25
  import { vfs } from '../../lib/vfs/vfs.js';
9
26
  import { spinner } from '../../lib/spinner.js';
10
27
  import { commandCancellation_enable, commandCancellation_signalGet } from '../../core/cancellation.js';
11
28
  import { scan_do } from '@fnndsc/chili/path/pathCommand.js';
12
29
  import { bytes_format } from '@fnndsc/chili/commands/fs/upload.js';
13
- import { envelope_error } from '@fnndsc/menu';
14
- import { exitCode_set } from '../../core/handlerRun.js';
15
- /** Long `du` flags that never accept a separate value. */
16
- const DU_BOOLEAN_LONG_OPTIONS = [
17
- 'human-readable', 'summarize', 'all', 'total', 'separate-dirs',
18
- ];
30
+ import { command_declare } from '../../core/commandDeclaration.js';
31
+ import { declaredCommand_run } from '../../core/commandParse.js';
32
+ /** What a `du` line may hold. */
33
+ const DU_GRAMMAR = {
34
+ operands: [
35
+ { name: 'path', kind: 'cfsPath', optional: true, repeat: true, glob: true, summary: 'What to measure; the working directory when none is given' },
36
+ ],
37
+ options: {
38
+ humanReadable: { short: 'h', long: 'human-readable', summary: 'Print sizes in human readable format' },
39
+ summarize: { short: 's', long: 'summarize', summary: 'Display only total for each argument' },
40
+ all: { short: 'a', long: 'all', summary: 'Show counts for all files, not just directories' },
41
+ total: { short: 'c', long: 'total', summary: 'Produce a grand total' },
42
+ separateDirs: { short: 'S', long: 'separate-dirs', summary: 'Do not include size of subdirectories' },
43
+ maxDepth: { short: 'd', long: 'max-depth', summary: 'Print total only if N or fewer levels below', value: { name: 'N', kind: 'int', min: 0 } },
44
+ },
45
+ };
46
+ /**
47
+ * `du [-hsacS] [-d <N>] [path…]`: the declaration.
48
+ *
49
+ * @example
50
+ * ```ts
51
+ * commands_register({ declarations: [duCommand] }, 'backend');
52
+ * ```
53
+ */
54
+ export const duCommand = command_declare({
55
+ name: 'du',
56
+ grammar: DU_GRAMMAR,
57
+ help: {
58
+ summary: 'Display disk usage statistics (mimics Linux du)',
59
+ description: "Says how much of ChRIS's filesystem each folder under a path takes, its subfolders included, as Linux du does: the working directory when no path is given, each path given otherwise (a wildcard matches paths). A file is its own size.",
60
+ category: 'Navigation',
61
+ posix: { group: 'Files', differs: 'sizes in CFS' },
62
+ examples: [
63
+ 'du # Disk usage of current directory',
64
+ 'du -h # Human-readable sizes (1K, 234M, 2G)',
65
+ 'du -s /home/user/data # Summary only for specified path',
66
+ 'du -a # Show all files, not just directories',
67
+ 'du -c # Show grand total at end',
68
+ 'du -d 2 # Max depth of 2 levels',
69
+ 'du -sh # Human-readable summary',
70
+ ],
71
+ },
72
+ holds: [],
73
+ handler: async (args) => du_run(args.operands.path, {
74
+ humanReadable: args.options.humanReadable,
75
+ summarize: args.options.summarize,
76
+ showAll: args.options.all,
77
+ showTotal: args.options.total,
78
+ separateDirs: args.options.separateDirs,
79
+ maxDepth: args.options.maxDepth,
80
+ }),
81
+ });
19
82
  /**
20
- * Spells `-d N` and `-dN` as `--max-depth=N`, the one form the parser
21
- * takes a value for: a short flag is otherwise a switch, and the depth
22
- * read as a path to measure.
83
+ * `du` over words already split: the declaration's parse and handler.
23
84
  *
24
- * @param args - du's words.
25
- * @returns The words, the depth spelled long.
85
+ * @param args - The words after `du`.
86
+ * @returns The sizes, or the refusal of a bad line.
26
87
  */
27
- export function depthOption_normalize(args) {
28
- const out = [];
29
- for (let i = 0; i < args.length; i++) {
30
- const arg = args[i];
31
- if (arg === '--') {
32
- out.push(...args.slice(i));
33
- break;
34
- }
35
- if (arg === '-d' && args[i + 1] !== undefined) {
36
- out.push(`--max-depth=${args[i + 1]}`);
37
- i++;
38
- continue;
39
- }
40
- const glued = arg.match(/^-d(\d+)$/);
41
- out.push(glued !== null ? `--max-depth=${glued[1]}` : arg);
42
- }
43
- return out;
88
+ export async function builtin_du(args) {
89
+ return declaredCommand_run(duCommand, args);
44
90
  }
45
- /** Every option du reads; any other is refused by name. */
46
- const DU_OPTIONS = [...DU_BOOLEAN_LONG_OPTIONS, 'max-depth', 'h', 's', 'a', 'c', 'S', 'd'];
47
91
  /**
48
92
  * Formats a byte count for `du` output: human-readable string or KB integer,
49
93
  * right-padded to 12 characters for column alignment.
@@ -58,27 +102,6 @@ export function duSize_format(bytes, humanReadable) {
58
102
  : Math.ceil(bytes / 1024).toString();
59
103
  return formatted.padStart(12, ' ');
60
104
  }
61
- /**
62
- * Extracts `du` flags from parsed command arguments.
63
- *
64
- * @param parsed - The parsed command arguments.
65
- * @returns The resolved du options.
66
- */
67
- export function duOptions_parse(parsed) {
68
- const maxDepth = parsed['d']
69
- ? parseInt(String(parsed['d']), 10)
70
- : parsed['max-depth']
71
- ? parseInt(String(parsed['max-depth']), 10)
72
- : undefined;
73
- return {
74
- humanReadable: !!parsed['h'] || !!parsed['human-readable'],
75
- summarize: !!parsed['s'] || !!parsed['summarize'],
76
- showAll: !!parsed['a'] || !!parsed['all'],
77
- showTotal: !!parsed['c'] || !!parsed['total'],
78
- separateDirs: !!parsed['S'] || !!parsed['separate-dirs'],
79
- maxDepth,
80
- };
81
- }
82
105
  /**
83
106
  * Resolves whether a target path is a directory or a file (with size).
84
107
  *
@@ -175,34 +198,22 @@ function dirUsage_render(dirSizes, targetPath, opts) {
175
198
  * Mimics standard Linux du command behavior and flags.
176
199
  * Uses chili's scan_do machinery for recursive filesystem traversal.
177
200
  *
178
- * @param args - Command line arguments (optional path and flags).
179
- * @returns A Promise that resolves when disk usage is displayed.
180
- *
181
- * @example
182
- * ```
183
- * du # Disk usage of current directory
184
- * du -h # Human-readable sizes
185
- * du -s /home/user/data # Summary only
186
- * du -a # Show all files, not just directories
187
- * du -c # Show grand total
188
- * du -d 2 # Max depth of 2 levels
189
- * ```
201
+ * @param pathArgs - The paths to measure; none measures the working directory.
202
+ * @param opts - The du options.
203
+ * @returns The sizes, and on the error channel each path that could not be read.
190
204
  */
191
- export async function builtin_du(args) {
192
- const parsed = commandArgs_process(depthOption_normalize(args), { booleanLongOptions: DU_BOOLEAN_LONG_OPTIONS });
193
- const unknown = optionsUnknown_refusal('du', parsed, DU_OPTIONS);
194
- if (unknown !== null) {
195
- exitCode_set(1);
196
- return envelope_error('', undefined, `${chalk.red(unknown)}\n`);
197
- }
198
- const opts = duOptions_parse(parsed);
199
- const pathArgs = parsed._;
205
+ async function du_run(pathArgs, opts) {
200
206
  commandCancellation_enable();
201
207
  const signal = commandCancellation_signalGet();
202
- const rawTargets = pathArgs.length > 0 ? pathArgs : ['.'];
208
+ const rawTargets = pathArgs.length > 0 ? [...pathArgs] : ['.'];
209
+ // Sized where the store keeps it (a run's data path, a link on the line),
210
+ // and named as the session names it.
203
211
  const resolvedTargets = [];
212
+ const logicalTargets = new Map();
204
213
  for (const raw of rawTargets) {
205
- resolvedTargets.push(await path_resolve(raw));
214
+ const stored = await storePath_resolve(raw);
215
+ resolvedTargets.push(stored);
216
+ logicalTargets.set(stored, await path_resolve(raw));
206
217
  }
207
218
  let grandTotal = 0;
208
219
  let rendered = '';
@@ -223,7 +234,7 @@ export async function builtin_du(args) {
223
234
  if (!stat.isDirectory) {
224
235
  grandTotal += stat.fileSize;
225
236
  spinner.stop();
226
- rendered += `${duSize_format(stat.fileSize, opts.humanReadable)}\t${targetPath}\n`;
237
+ rendered += `${duSize_format(stat.fileSize, opts.humanReadable)}\t${logicalTargets.get(targetPath) ?? targetPath}\n`;
227
238
  continue;
228
239
  }
229
240
  // Scanned where it stands: the shared directory stays put.
@@ -246,7 +257,7 @@ export async function builtin_du(args) {
246
257
  const dirSizes = dirSizes_compute(scanResult, targetPath, opts);
247
258
  grandTotal += scanResult.totalSize;
248
259
  spinner.stop();
249
- rendered += dirUsage_render(dirSizes, targetPath, opts);
260
+ rendered += usageNames_logical(dirUsage_render(dirSizes, targetPath, opts), targetPath, logicalTargets.get(targetPath) ?? targetPath);
250
261
  }
251
262
  if (opts.showTotal && rawTargets.length > 0) {
252
263
  rendered += `${duSize_format(grandTotal, opts.humanReadable)}\ttotal\n`;
@@ -261,4 +272,25 @@ export async function builtin_du(args) {
261
272
  spinner.stop();
262
273
  }
263
274
  }
275
+ /**
276
+ * Names each row of a folder's usage as the session names it: the store
277
+ * folder it was read from gives way to the path asked.
278
+ *
279
+ * @param rows - The rows, `size<TAB>path` each.
280
+ * @param storeRoot - The store folder scanned.
281
+ * @param logicalRoot - The folder as the session names it.
282
+ * @returns The rows, renamed.
283
+ */
284
+ function usageNames_logical(rows, storeRoot, logicalRoot) {
285
+ if (storeRoot === logicalRoot)
286
+ return rows;
287
+ return rows.split('\n').map((row) => {
288
+ const tab = row.indexOf('\t');
289
+ if (tab === -1)
290
+ return row;
291
+ const named = row.slice(tab + 1);
292
+ const shown = named === storeRoot ? logicalRoot : named.startsWith(`${storeRoot}/`) ? `${logicalRoot}${named.slice(storeRoot.length)}` : named;
293
+ return `${row.slice(0, tab)}\t${shown}`;
294
+ }).join('\n');
295
+ }
264
296
  //# sourceMappingURL=du.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"du.js","sourceRoot":"","sources":["../../../src/builtins/fs/du.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"du.js","sourceRoot":"","sources":["../../../src/builtins/fs/du.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,25 @@ import { type CommandEnvelope } from '@fnndsc/menu';
2
2
  /** What `edit` says when the surface opened an editor that stays open. */
3
3
  export declare const EDIT_OPENED_LINE: string;
4
4
  /**
5
- * Opens a ChRIS file in the surface's local editor. On save, replaces the
6
- * original via delete + re-upload. No-ops if content is unchanged.
5
+ * `edit <file>`: the declaration.
7
6
  *
8
- * @param args - [filePath, ...]
9
- * @returns An envelope carrying the edit outcome.
7
+ * @example
8
+ * ```ts
9
+ * commands_register({ declarations: [editCommand] }, 'backend');
10
+ * ```
11
+ */
12
+ export declare const editCommand: import("../../core/commandDeclaration.js").CommandDeclaration<{
13
+ readonly operands: readonly [{
14
+ readonly name: "file";
15
+ readonly kind: "cfsPath";
16
+ readonly glob: true;
17
+ readonly summary: "The ChRIS file to edit";
18
+ }];
19
+ }>;
20
+ /**
21
+ * `edit` over words already split: the declaration's parse and handler.
22
+ *
23
+ * @param args - The words after `edit`.
24
+ * @returns The edit outcome, or the refusal of a bad line.
10
25
  */
11
26
  export declare function builtin_edit(args: string[]): Promise<CommandEnvelope>;