@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,18 +1,19 @@
1
1
  import { Result } from '@fnndsc/fond';
2
2
  /**
3
- * Determines whether an argument belongs to the CFS/VFS shell namespace.
3
+ * Determines whether an argument of a command not yet declared belongs to the
4
+ * CFS/VFS shell namespace. A declared command never asks: its grammar says
5
+ * which operands glob (core/commandParse.ts), and each command leaves this
6
+ * table as it is declared.
4
7
  *
5
- * Ordinary ChELL words expand before dispatch. Transfer commands mark their
6
- * host-local operands as a different realm: upload owns host-source expansion,
7
- * while download keeps its final host destination literal.
8
+ * Every word of such a command is a CFS/VFS word, expanded before dispatch.
8
9
  *
9
- * @param command - Command word being executed.
10
- * @param index - Zero-based argument position before expansion.
11
- * @param argumentCount - Number of arguments before expansion.
12
- * @param args - Argument values before expansion.
10
+ * @param _command - Command word being executed.
11
+ * @param _index - Zero-based argument position before expansion.
12
+ * @param _argumentCount - Number of arguments before expansion.
13
+ * @param _args - Argument values before expansion.
13
14
  * @returns True if the word is eligible for CFS/VFS pathname expansion.
14
15
  */
15
- export declare function pathnameExpansion_isEligible(command: string, index: number, argumentCount: number, args?: readonly string[]): boolean;
16
+ export declare function pathnameExpansion_isEligible(_command: string, _index: number, _argumentCount: number, _args?: readonly string[]): boolean;
16
17
  /**
17
18
  * Returns true if the input line is a shell escape (starts with `!`).
18
19
  *
@@ -11,30 +11,20 @@ import { args_tokenize } from '../lib/parser.js';
11
11
  import { Ok, Err, errorStack } from '@fnndsc/fond';
12
12
  import { backslash_escapesNext } from '../lib/quoting.js';
13
13
  /**
14
- * Determines whether an argument belongs to the CFS/VFS shell namespace.
14
+ * Determines whether an argument of a command not yet declared belongs to the
15
+ * CFS/VFS shell namespace. A declared command never asks: its grammar says
16
+ * which operands glob (core/commandParse.ts), and each command leaves this
17
+ * table as it is declared.
15
18
  *
16
- * Ordinary ChELL words expand before dispatch. Transfer commands mark their
17
- * host-local operands as a different realm: upload owns host-source expansion,
18
- * while download keeps its final host destination literal.
19
+ * Every word of such a command is a CFS/VFS word, expanded before dispatch.
19
20
  *
20
- * @param command - Command word being executed.
21
- * @param index - Zero-based argument position before expansion.
22
- * @param argumentCount - Number of arguments before expansion.
23
- * @param args - Argument values before expansion.
21
+ * @param _command - Command word being executed.
22
+ * @param _index - Zero-based argument position before expansion.
23
+ * @param _argumentCount - Number of arguments before expansion.
24
+ * @param _args - Argument values before expansion.
24
25
  * @returns True if the word is eligible for CFS/VFS pathname expansion.
25
26
  */
26
- export function pathnameExpansion_isEligible(command, index, argumentCount, args = []) {
27
- if (command === 'upload')
28
- return false;
29
- if (command === 'download') {
30
- const positionalIndexes = args.reduce((indexes, arg, argIndex) => {
31
- if (arg !== '-f' && arg !== '--force')
32
- indexes.push(argIndex);
33
- return indexes;
34
- }, []);
35
- const destinationIndex = positionalIndexes.at(-1);
36
- return destinationIndex !== undefined && index !== destinationIndex && positionalIndexes.includes(index);
37
- }
27
+ export function pathnameExpansion_isEligible(_command, _index, _argumentCount, _args = []) {
38
28
  return true;
39
29
  }
40
30
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"preprocess.js","sourceRoot":"","sources":["../../src/core/preprocess.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preprocess.js","sourceRoot":"","sources":["../../src/core/preprocess.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,15 @@
1
1
  /**
2
- * @file Warm-up steps that failed behind the prompt.
2
+ * @file Warm-up steps behind the prompt: those still running, and those that failed.
3
3
  *
4
4
  * A warm-up moved off the boot gate reports its failure afterwards, and a
5
5
  * boot readout has scrolled away by then. So a failure is held here until
6
6
  * a later attempt succeeds, and every surface reads it from the prompt
7
7
  * context: a message that vanishes is one nobody acts on.
8
8
  *
9
+ * A step still running is held here too, from its start to its outcome: a
10
+ * daemon listens before its warm-up ends, and a surface that attaches
11
+ * meanwhile is told what the session is still warming.
12
+ *
9
13
  * Kept free of imports so it can be unit tested; the engine graph cannot
10
14
  * be loaded under jest.
11
15
  *
@@ -21,6 +25,34 @@ export interface WarmupFailure {
21
25
  label: string;
22
26
  message: string;
23
27
  }
28
+ /**
29
+ * Records that a deferred warm-up step has started and not yet settled.
30
+ *
31
+ * @param label - The boot-step label.
32
+ *
33
+ * @example
34
+ * warmupPending_note('Public');
35
+ * warmupPending_list(); // ['Public']
36
+ */
37
+ export declare function warmupPending_note(label: string): void;
38
+ /**
39
+ * Records that a deferred warm-up step has settled, whatever its outcome.
40
+ *
41
+ * @param label - The boot-step label.
42
+ *
43
+ * @example
44
+ * warmupPending_clear('Public');
45
+ */
46
+ export declare function warmupPending_clear(label: string): void;
47
+ /**
48
+ * The steps still warming, in the order they started.
49
+ *
50
+ * @returns One label per step that has started and not yet settled.
51
+ *
52
+ * @example
53
+ * warmupPending_list(); // ['Public', 'Queries'] while those two run
54
+ */
55
+ export declare function warmupPending_list(): string[];
24
56
  /**
25
57
  * Records that a deferred warm-up step failed.
26
58
  *
@@ -40,5 +72,5 @@ export declare function warmupFailure_clear(label: string): void;
40
72
  * @returns One entry per step that failed and has not since succeeded.
41
73
  */
42
74
  export declare function warmupFailures_list(): WarmupFailure[];
43
- /** Forgets every recorded failure (tests, and a session starting over). */
75
+ /** Forgets every recorded failure and running step (tests, and a session starting over). */
44
76
  export declare function warmupFailures_reset(): void;
@@ -1,11 +1,15 @@
1
1
  /**
2
- * @file Warm-up steps that failed behind the prompt.
2
+ * @file Warm-up steps behind the prompt: those still running, and those that failed.
3
3
  *
4
4
  * A warm-up moved off the boot gate reports its failure afterwards, and a
5
5
  * boot readout has scrolled away by then. So a failure is held here until
6
6
  * a later attempt succeeds, and every surface reads it from the prompt
7
7
  * context: a message that vanishes is one nobody acts on.
8
8
  *
9
+ * A step still running is held here too, from its start to its outcome: a
10
+ * daemon listens before its warm-up ends, and a surface that attaches
11
+ * meanwhile is told what the session is still warming.
12
+ *
9
13
  * Kept free of imports so it can be unit tested; the engine graph cannot
10
14
  * be loaded under jest.
11
15
  *
@@ -13,6 +17,42 @@
13
17
  */
14
18
  /** Failures by label, so a later attempt replaces rather than repeats. */
15
19
  const failures = new Map();
20
+ /** Labels of the steps still running, in the order they started. */
21
+ const pending = new Set();
22
+ /**
23
+ * Records that a deferred warm-up step has started and not yet settled.
24
+ *
25
+ * @param label - The boot-step label.
26
+ *
27
+ * @example
28
+ * warmupPending_note('Public');
29
+ * warmupPending_list(); // ['Public']
30
+ */
31
+ export function warmupPending_note(label) {
32
+ pending.add(label);
33
+ }
34
+ /**
35
+ * Records that a deferred warm-up step has settled, whatever its outcome.
36
+ *
37
+ * @param label - The boot-step label.
38
+ *
39
+ * @example
40
+ * warmupPending_clear('Public');
41
+ */
42
+ export function warmupPending_clear(label) {
43
+ pending.delete(label);
44
+ }
45
+ /**
46
+ * The steps still warming, in the order they started.
47
+ *
48
+ * @returns One label per step that has started and not yet settled.
49
+ *
50
+ * @example
51
+ * warmupPending_list(); // ['Public', 'Queries'] while those two run
52
+ */
53
+ export function warmupPending_list() {
54
+ return Array.from(pending);
55
+ }
16
56
  /**
17
57
  * Records that a deferred warm-up step failed.
18
58
  *
@@ -38,8 +78,9 @@ export function warmupFailure_clear(label) {
38
78
  export function warmupFailures_list() {
39
79
  return Array.from(failures, ([label, message]) => ({ label, message }));
40
80
  }
41
- /** Forgets every recorded failure (tests, and a session starting over). */
81
+ /** Forgets every recorded failure and running step (tests, and a session starting over). */
42
82
  export function warmupFailures_reset() {
43
83
  failures.clear();
84
+ pending.clear();
44
85
  }
45
86
  //# sourceMappingURL=warmupFailures.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"warmupFailures.js","sourceRoot":"","sources":["../../src/core/warmupFailures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAaH,0EAA0E;AAC1E,MAAM,QAAQ,GAAwB,IAAI,GAAG,EAAE,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,OAAe;IAC/D,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,CAAmB,EAAiB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAC3G,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,oBAAoB;IAClC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"warmupFailures.js","sourceRoot":"","sources":["../../src/core/warmupFailures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAaH,0EAA0E;AAC1E,MAAM,QAAQ,GAAwB,IAAI,GAAG,EAAE,CAAC;AAEhD,oEAAoE;AACpE,MAAM,OAAO,GAAgB,IAAI,GAAG,EAAE,CAAC;AAEvC;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,OAAe;IAC/D,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,CAAmB,EAAiB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAC3G,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,oBAAoB;IAClC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The entries of the folder a partial path names that start with its last
3
+ * part, in the partial's own style (tilde or relative kept), a folder
4
+ * ending in `/`.
5
+ *
6
+ * @param partial - The path typed so far.
7
+ * @returns The candidates; none when the folder cannot be listed.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * await cfsPaths_complete('/home/mise-e2e/'); // ['/home/mise-e2e/feeds/', '/home/mise-e2e/uploads/', …]
12
+ * ```
13
+ */
14
+ export declare function cfsPaths_complete(partial: string): Promise<string[]>;
@@ -0,0 +1,91 @@
1
+ /**
2
+ * @file Completion of a path in ChRIS's filesystem (CFS): the entries of the
3
+ * folder a partial path names that start with its last part, read through
4
+ * the session's filesystem and kept in the listing cache.
5
+ *
6
+ * Key components:
7
+ * - cfsPaths_complete: the candidates for a partial path.
8
+ *
9
+ * Typical usage:
10
+ * ```ts
11
+ * const candidates: string[] = await cfsPaths_complete('~/uploads/sub');
12
+ * ```
13
+ *
14
+ * Dependencies: the session's working directory and home, its filesystem
15
+ * dispatcher and listing cache.
16
+ *
17
+ * @module
18
+ */
19
+ import * as path from 'path';
20
+ import { session } from '../../session/index.js';
21
+ import { listingItemsFromVfs_make } from '../vfs/listing.js';
22
+ import { partialPath_split, completions_build } from './pathComplete.helpers.js';
23
+ import { backendInstalled_get } from '../../core/backend.js';
24
+ import { listingCache_get, vfsDispatcher_get } from '../../core/filesystem.js';
25
+ /**
26
+ * The entries of the folder a partial path names that start with its last
27
+ * part, in the partial's own style (tilde or relative kept), a folder
28
+ * ending in `/`.
29
+ *
30
+ * @param partial - The path typed so far.
31
+ * @returns The candidates; none when the folder cannot be listed.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * await cfsPaths_complete('/home/mise-e2e/'); // ['/home/mise-e2e/feeds/', '/home/mise-e2e/uploads/', …]
36
+ * ```
37
+ */
38
+ export async function cfsPaths_complete(partial) {
39
+ let effectivePartial = partial;
40
+ if (partial.startsWith('~')) {
41
+ const home = (await backendInstalled_get()?.session.home_get()) ?? '/';
42
+ if (partial === '~' || partial === '~/') {
43
+ effectivePartial = home + (partial.endsWith('/') ? '/' : '');
44
+ }
45
+ else if (partial.startsWith('~/')) {
46
+ effectivePartial = path.posix.join(home, partial.substring(2));
47
+ }
48
+ }
49
+ const { dirToList, prefix } = partialPath_split(effectivePartial);
50
+ let absDirToList;
51
+ if (dirToList.startsWith('/')) {
52
+ absDirToList = dirToList;
53
+ }
54
+ else {
55
+ const cwd = await session.getCWD();
56
+ absDirToList = dirToList ? path.posix.resolve(cwd, dirToList) : cwd;
57
+ }
58
+ let items = [];
59
+ const listCache = listingCache_get();
60
+ const cached = listCache.cache_get(absDirToList);
61
+ if (cached) {
62
+ items = cached.data;
63
+ }
64
+ else {
65
+ try {
66
+ // The session's filesystem answers every path: the backend's mounts and fallback, and the core's.
67
+ const vfsResult = await vfsDispatcher_get().list(absDirToList);
68
+ if (vfsResult.ok) {
69
+ items = listingItemsFromVfs_make(vfsResult.value);
70
+ }
71
+ // Names completed at the root even when its listing lacks them.
72
+ if (absDirToList === '/' || absDirToList === '') {
73
+ const hasItem = (name) => items.some((item) => item.name === name);
74
+ for (const name of backendInstalled_get()?.completion?.rootWords ?? ['usr']) {
75
+ if (!hasItem(name)) {
76
+ items.push({ name, type: 'vfs', size: 0, owner: 'root', date: new Date().toISOString() });
77
+ }
78
+ }
79
+ }
80
+ if (items.length > 0) {
81
+ listCache.cache_set(absDirToList, items);
82
+ }
83
+ }
84
+ catch {
85
+ // A folder that cannot be listed (permissions, not a folder) completes nothing.
86
+ }
87
+ }
88
+ // The partial's own style (tilde or relative) is kept, and a folder ends in "/".
89
+ return completions_build(items, prefix, partial);
90
+ }
91
+ //# sourceMappingURL=cfsPaths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cfsPaths.js","sourceRoot":"","sources":["../../../src/lib/completer/cfsPaths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { type AnyCommandDeclaration } from '../../core/commandDeclaration.js';
2
+ /**
3
+ * The candidates for the word being typed in a declared command's line.
4
+ *
5
+ * @param declaration - The command.
6
+ * @param prior - The words after the command, before the one being typed.
7
+ * @param word - The word typed so far (quotes removed).
8
+ * @returns The candidates, each the whole word; a folder ends in `/`.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * await declaredWord_complete(lsCommand, ['--sort'], 's'); // ['size']
13
+ * ```
14
+ */
15
+ export declare function declaredWord_complete(declaration: AnyCommandDeclaration, prior: readonly string[], word: string): Promise<string[]>;
@@ -0,0 +1,189 @@
1
+ /**
2
+ * @file Completion of a declared command's line, read from its grammar: its
3
+ * subcommand words, its option names, an option's value by its kind, and an
4
+ * operand by the kind of the operand it stands in.
5
+ *
6
+ * The line is walked as the parser walks it, but forgivingly: what is typed
7
+ * so far may be half a line, and nothing is refused.
8
+ *
9
+ * Key components:
10
+ * - declaredWord_complete: the candidates for the word being typed.
11
+ *
12
+ * Typical usage:
13
+ * ```ts
14
+ * await declaredWord_complete(berthCommand, [], 'an'); // ['anchor']
15
+ * await declaredWord_complete(lsCommand, [], '-'); // ['-l', '-1', …, '--sort']
16
+ * ```
17
+ *
18
+ * Dependencies: the argument kinds, whose completion sources answer the values.
19
+ *
20
+ * @module
21
+ */
22
+ import { argumentKind_get, candidates_filter } from '../../core/argumentKinds.js';
23
+ import { declaration_isParsed, } from '../../core/commandDeclaration.js';
24
+ /** A word that reads as a negative number. */
25
+ const NEGATIVE_NUMBER = /^-\d+(?:\.\d+)?$/;
26
+ /**
27
+ * The options in reach: the subcommand's (the bare command's while none is
28
+ * typed), then the command's.
29
+ *
30
+ * @param grammar - The command's grammar.
31
+ * @param subcommand - The subcommand's, or null.
32
+ * @returns The options.
33
+ */
34
+ function optionsInReach_list(grammar, subcommand) {
35
+ const own = subcommand === null ? (grammar.bare?.options ?? {}) : (subcommand.options ?? {});
36
+ return [...Object.values(own), ...Object.values(grammar.options ?? {})];
37
+ }
38
+ /**
39
+ * The option a word of short options leaves waiting for its value: one
40
+ * that takes a value and ends the word (`-o`); none when the value is in
41
+ * the word (`-ofile`) or no letter takes one.
42
+ *
43
+ * @param options - The options in reach.
44
+ * @param word - The word, `-` and letters.
45
+ * @returns The option waiting, or null.
46
+ */
47
+ function shortValue_pending(options, word) {
48
+ for (let index = 1; index < word.length; index += 1) {
49
+ const option = options.find((one) => one.short === word[index]);
50
+ if (option?.value !== undefined)
51
+ return index === word.length - 1 && option.value.optional !== true ? option : null;
52
+ }
53
+ return null;
54
+ }
55
+ /**
56
+ * Walks the words before the one being typed, as the parser would.
57
+ *
58
+ * @param grammar - The command's grammar.
59
+ * @param prior - The words after the command, before the word being typed.
60
+ * @returns Where the line stands.
61
+ */
62
+ function lineReach_walk(grammar, prior) {
63
+ const reach = { subcommand: null, optionsEnded: false, pending: null, operands: 0 };
64
+ for (const word of prior) {
65
+ const options = optionsInReach_list(grammar, reach.subcommand);
66
+ if (reach.pending !== null) {
67
+ reach.pending = null;
68
+ }
69
+ else if (!reach.optionsEnded && word === '--') {
70
+ reach.optionsEnded = true;
71
+ }
72
+ else if (!reach.optionsEnded && word.startsWith('--')) {
73
+ const option = options.find((one) => one.long === word.slice(2));
74
+ // An optional value is in the option's own word, so the next word is not it.
75
+ reach.pending = option?.value !== undefined && option.value.optional !== true && !word.includes('=') ? option : null;
76
+ }
77
+ else if (!reach.optionsEnded && word.startsWith('-') && word.length > 1 && !NEGATIVE_NUMBER.test(word)) {
78
+ reach.pending = shortValue_pending(options, word);
79
+ }
80
+ else if (grammar.subcommands !== undefined && reach.subcommand === null && reach.operands === 0 && !reach.optionsEnded && Object.hasOwn(grammar.subcommands, word)) {
81
+ reach.subcommand = grammar.subcommands[word] ?? null;
82
+ }
83
+ else {
84
+ reach.operands += 1;
85
+ }
86
+ }
87
+ return reach;
88
+ }
89
+ /**
90
+ * The operands a word at a place may stand in: the one there, or, past the
91
+ * operands before a repeated one, the repeated one and those after it.
92
+ *
93
+ * @param operands - The operands, in order.
94
+ * @param place - How many operands stand before the word.
95
+ * @returns The operands it may be.
96
+ */
97
+ function operandsAtPlace_list(operands, place) {
98
+ let at = 0;
99
+ for (const [index, operand] of operands.entries()) {
100
+ if (operand.repeat === true)
101
+ return place === at ? [operand] : [operand, ...operands.slice(index + 1)];
102
+ if (place === at)
103
+ return [operand];
104
+ at += 1;
105
+ }
106
+ return [];
107
+ }
108
+ /**
109
+ * Completes a value by its argument's kind.
110
+ *
111
+ * @param argument - The argument.
112
+ * @param partial - The value typed so far.
113
+ * @returns The candidates.
114
+ */
115
+ async function value_complete(argument, partial) {
116
+ const kind = argumentKind_get(argument.kind);
117
+ if (kind?.words_complete === undefined)
118
+ return [];
119
+ try {
120
+ return await kind.words_complete(partial, argument);
121
+ }
122
+ catch {
123
+ return [];
124
+ }
125
+ }
126
+ /**
127
+ * The option names in reach that start with a word: `-l` and `--long` alike.
128
+ *
129
+ * @param options - The options.
130
+ * @param word - The word typed.
131
+ * @returns The names.
132
+ */
133
+ function optionNames_complete(options, word) {
134
+ const names = [];
135
+ for (const option of options) {
136
+ if (option.short !== undefined)
137
+ names.push(`-${option.short}`);
138
+ }
139
+ for (const option of options) {
140
+ if (option.long !== undefined)
141
+ names.push(`--${option.long}`);
142
+ }
143
+ return candidates_filter([...new Set(names)], word);
144
+ }
145
+ /**
146
+ * The candidates for the word being typed in a declared command's line.
147
+ *
148
+ * @param declaration - The command.
149
+ * @param prior - The words after the command, before the one being typed.
150
+ * @param word - The word typed so far (quotes removed).
151
+ * @returns The candidates, each the whole word; a folder ends in `/`.
152
+ *
153
+ * @example
154
+ * ```ts
155
+ * await declaredWord_complete(lsCommand, ['--sort'], 's'); // ['size']
156
+ * ```
157
+ */
158
+ export async function declaredWord_complete(declaration, prior, word) {
159
+ if (!declaration_isParsed(declaration))
160
+ return (await declaration.complete?.(prior, word)) ?? [];
161
+ const grammar = declaration.grammar;
162
+ const reach = lineReach_walk(grammar, prior);
163
+ if (reach.pending?.value !== undefined)
164
+ return value_complete(reach.pending.value, word);
165
+ const options = optionsInReach_list(grammar, reach.subcommand);
166
+ if (!reach.optionsEnded && word.startsWith('--') && word.includes('=')) {
167
+ const name = word.slice(2, word.indexOf('='));
168
+ const option = options.find((one) => one.long === name);
169
+ if (option?.value === undefined)
170
+ return [];
171
+ const head = word.slice(0, word.indexOf('=') + 1);
172
+ return (await value_complete(option.value, word.slice(head.length))).map((value) => `${head}${value}`);
173
+ }
174
+ if (!reach.optionsEnded && word.startsWith('-') && !NEGATIVE_NUMBER.test(word))
175
+ return optionNames_complete(options, word);
176
+ const subcommands = grammar.subcommands;
177
+ const operands = reach.subcommand?.operands ?? grammar.operands ?? [];
178
+ const candidates = [];
179
+ if (subcommands !== undefined && reach.subcommand === null && reach.operands === 0 && !reach.optionsEnded) {
180
+ candidates.push(...candidates_filter(Object.keys(subcommands), word));
181
+ if ((grammar.operands ?? []).length === 0)
182
+ return candidates;
183
+ }
184
+ for (const operand of operandsAtPlace_list(operands, reach.operands)) {
185
+ candidates.push(...await value_complete(operand, word));
186
+ }
187
+ return [...new Set(candidates)];
188
+ }
189
+ //# sourceMappingURL=declared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declared.js","sourceRoot":"","sources":["../../../src/lib/completer/declared.ts"],"names":[],"mappings":"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"}