@fnndsc/brasa 0.33.4 → 0.35.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 (424) hide show
  1. package/dist/api/models.d.ts +1 -2
  2. package/dist/api/models.js.map +1 -1
  3. package/dist/buildinfo.json +1 -1
  4. package/dist/builtins/debug.d.ts +1 -1
  5. package/dist/builtins/debug.js +12 -8
  6. package/dist/builtins/debug.js.map +1 -1
  7. package/dist/builtins/executable.d.ts +1 -1
  8. package/dist/builtins/executable.js +2 -1
  9. package/dist/builtins/executable.js.map +1 -1
  10. package/dist/builtins/fs/acl.d.ts +1 -16
  11. package/dist/builtins/fs/acl.js +3 -1
  12. package/dist/builtins/fs/acl.js.map +1 -1
  13. package/dist/builtins/fs/archive.js +1 -1
  14. package/dist/builtins/fs/archive.js.map +1 -1
  15. package/dist/builtins/fs/cat.d.ts +1 -1
  16. package/dist/builtins/fs/cat.js +47 -7
  17. package/dist/builtins/fs/cat.js.map +1 -1
  18. package/dist/builtins/fs/cd.d.ts +1 -19
  19. package/dist/builtins/fs/cd.js +45 -94
  20. package/dist/builtins/fs/cd.js.map +1 -1
  21. package/dist/builtins/fs/configWrite.d.ts +1 -1
  22. package/dist/builtins/fs/configWrite.js +1 -1
  23. package/dist/builtins/fs/configWrite.js.map +1 -1
  24. package/dist/builtins/fs/cp.d.ts +1 -1
  25. package/dist/builtins/fs/cp.js +19 -13
  26. package/dist/builtins/fs/cp.js.map +1 -1
  27. package/dist/builtins/fs/download.d.ts +1 -1
  28. package/dist/builtins/fs/download.js +2 -1
  29. package/dist/builtins/fs/download.js.map +1 -1
  30. package/dist/builtins/fs/du.d.ts +10 -1
  31. package/dist/builtins/fs/du.js +36 -2
  32. package/dist/builtins/fs/du.js.map +1 -1
  33. package/dist/builtins/fs/edit.d.ts +1 -1
  34. package/dist/builtins/fs/edit.js +10 -4
  35. package/dist/builtins/fs/edit.js.map +1 -1
  36. package/dist/builtins/fs/entries.d.ts +43 -0
  37. package/dist/builtins/fs/entries.js +81 -0
  38. package/dist/builtins/fs/entries.js.map +1 -0
  39. package/dist/builtins/fs/ls.d.ts +1 -2
  40. package/dist/builtins/fs/ls.js +70 -10
  41. package/dist/builtins/fs/ls.js.map +1 -1
  42. package/dist/builtins/fs/mkdir.d.ts +1 -1
  43. package/dist/builtins/fs/mkdir.js +29 -20
  44. package/dist/builtins/fs/mkdir.js.map +1 -1
  45. package/dist/builtins/fs/mv.d.ts +1 -1
  46. package/dist/builtins/fs/mv.js +40 -23
  47. package/dist/builtins/fs/mv.js.map +1 -1
  48. package/dist/builtins/fs/pull.d.ts +1 -1
  49. package/dist/builtins/fs/pull.js +2 -1
  50. package/dist/builtins/fs/pull.js.map +1 -1
  51. package/dist/builtins/fs/pwd.d.ts +1 -1
  52. package/dist/builtins/fs/pwd.js +9 -45
  53. package/dist/builtins/fs/pwd.js.map +1 -1
  54. package/dist/builtins/fs/rm.d.ts +1 -22
  55. package/dist/builtins/fs/rm.js +33 -58
  56. package/dist/builtins/fs/rm.js.map +1 -1
  57. package/dist/builtins/fs/rmdir.d.ts +1 -1
  58. package/dist/builtins/fs/rmdir.js +21 -40
  59. package/dist/builtins/fs/rmdir.js.map +1 -1
  60. package/dist/builtins/fs/touch.d.ts +1 -1
  61. package/dist/builtins/fs/touch.js +64 -25
  62. package/dist/builtins/fs/touch.js.map +1 -1
  63. package/dist/builtins/fs/tree.d.ts +1 -1
  64. package/dist/builtins/fs/tree.js +26 -3
  65. package/dist/builtins/fs/tree.js.map +1 -1
  66. package/dist/builtins/fs/upload.d.ts +1 -1
  67. package/dist/builtins/fs/upload.js +3 -1
  68. package/dist/builtins/fs/upload.js.map +1 -1
  69. package/dist/builtins/fs/xattr.d.ts +1 -10
  70. package/dist/builtins/fs/xattr.js +3 -1
  71. package/dist/builtins/fs/xattr.js.map +1 -1
  72. package/dist/builtins/games/bytes.d.ts +1 -1
  73. package/dist/builtins/games/bytes.js +2 -1
  74. package/dist/builtins/games/bytes.js.map +1 -1
  75. package/dist/builtins/games/chimes.d.ts +1 -13
  76. package/dist/builtins/games/chimes.js +1 -1
  77. package/dist/builtins/games/chimes.js.map +1 -1
  78. package/dist/builtins/games/chrislab.d.ts +33 -0
  79. package/dist/builtins/games/chrislab.js +117 -0
  80. package/dist/builtins/games/chrislab.js.map +1 -0
  81. package/dist/builtins/games/cowsay.d.ts +1 -11
  82. package/dist/builtins/games/cowsay.js +1 -1
  83. package/dist/builtins/games/cowsay.js.map +1 -1
  84. package/dist/builtins/games/figlet.d.ts +1 -11
  85. package/dist/builtins/games/figlet.js +1 -1
  86. package/dist/builtins/games/figlet.js.map +1 -1
  87. package/dist/builtins/games/lab.d.ts +1 -43
  88. package/dist/builtins/games/lab.js +7 -111
  89. package/dist/builtins/games/lab.js.map +1 -1
  90. package/dist/builtins/games/lolcat.d.ts +1 -11
  91. package/dist/builtins/games/lolcat.js +1 -1
  92. package/dist/builtins/games/lolcat.js.map +1 -1
  93. package/dist/builtins/games/morse.d.ts +1 -10
  94. package/dist/builtins/games/morse.js +1 -1
  95. package/dist/builtins/games/morse.js.map +1 -1
  96. package/dist/builtins/games/numbers.d.ts +1 -10
  97. package/dist/builtins/games/numbers.js +1 -1
  98. package/dist/builtins/games/numbers.js.map +1 -1
  99. package/dist/builtins/games/play.d.ts +1 -11
  100. package/dist/builtins/games/play.js +1 -1
  101. package/dist/builtins/games/play.js.map +1 -1
  102. package/dist/builtins/games/qr.d.ts +1 -12
  103. package/dist/builtins/games/qr.js +1 -1
  104. package/dist/builtins/games/qr.js.map +1 -1
  105. package/dist/builtins/games/show.d.ts +1 -12
  106. package/dist/builtins/games/show.js +1 -1
  107. package/dist/builtins/games/show.js.map +1 -1
  108. package/dist/builtins/games/sky.d.ts +1 -11
  109. package/dist/builtins/games/sky.js +1 -1
  110. package/dist/builtins/games/sky.js.map +1 -1
  111. package/dist/builtins/games/text.d.ts +1 -10
  112. package/dist/builtins/games/text.js +1 -1
  113. package/dist/builtins/games/text.js.map +1 -1
  114. package/dist/builtins/games/wtf.d.ts +1 -9
  115. package/dist/builtins/games/wtf.js +1 -1
  116. package/dist/builtins/games/wtf.js.map +1 -1
  117. package/dist/builtins/help.d.ts +18 -15
  118. package/dist/builtins/help.js +51 -1200
  119. package/dist/builtins/help.js.map +1 -1
  120. package/dist/builtins/net/connect.d.ts +1 -1
  121. package/dist/builtins/net/connect.js +2 -1
  122. package/dist/builtins/net/connect.js.map +1 -1
  123. package/dist/builtins/net/cubepath.d.ts +1 -1
  124. package/dist/builtins/net/cubepath.js +1 -1
  125. package/dist/builtins/net/cubepath.js.map +1 -1
  126. package/dist/builtins/net/logout.d.ts +1 -1
  127. package/dist/builtins/net/logout.js +1 -1
  128. package/dist/builtins/net/logout.js.map +1 -1
  129. package/dist/builtins/net/netstat.d.ts +1 -1
  130. package/dist/builtins/net/netstat.js +1 -2
  131. package/dist/builtins/net/netstat.js.map +1 -1
  132. package/dist/builtins/net/pacs.d.ts +1 -1
  133. package/dist/builtins/net/pacs.js +3 -2
  134. package/dist/builtins/net/pacs.js.map +1 -1
  135. package/dist/builtins/net/pacsUtils.js +2 -1
  136. package/dist/builtins/net/pacsUtils.js.map +1 -1
  137. package/dist/builtins/net/query.csv.js +1 -1
  138. package/dist/builtins/net/query.csv.js.map +1 -1
  139. package/dist/builtins/net/query.d.ts +2 -2
  140. package/dist/builtins/net/query.fanout.d.ts +1 -1
  141. package/dist/builtins/net/query.fanout.js +1 -1
  142. package/dist/builtins/net/query.fanout.js.map +1 -1
  143. package/dist/builtins/net/query.js +3 -2
  144. package/dist/builtins/net/query.js.map +1 -1
  145. package/dist/builtins/net/status.d.ts +1 -1
  146. package/dist/builtins/net/status.js +2 -1
  147. package/dist/builtins/net/status.js.map +1 -1
  148. package/dist/builtins/parametersofplugin.d.ts +1 -1
  149. package/dist/builtins/parametersofplugin.js +1 -1
  150. package/dist/builtins/parametersofplugin.js.map +1 -1
  151. package/dist/builtins/pluginExecute.d.ts +1 -1
  152. package/dist/builtins/pluginExecute.js +3 -1
  153. package/dist/builtins/pluginExecute.js.map +1 -1
  154. package/dist/builtins/proc.d.ts +1 -2
  155. package/dist/builtins/proc.js +4 -3
  156. package/dist/builtins/proc.js.map +1 -1
  157. package/dist/builtins/res/compute.d.ts +1 -1
  158. package/dist/builtins/res/compute.js +2 -1
  159. package/dist/builtins/res/compute.js.map +1 -1
  160. package/dist/builtins/res/dicom.d.ts +2 -2
  161. package/dist/builtins/res/dicom.js +1 -2
  162. package/dist/builtins/res/dicom.js.map +1 -1
  163. package/dist/builtins/res/expect.d.ts +1 -1
  164. package/dist/builtins/res/expect.js +2 -1
  165. package/dist/builtins/res/expect.js.map +1 -1
  166. package/dist/builtins/res/feed.d.ts +1 -1
  167. package/dist/builtins/res/feed.diagram.d.ts +1 -2
  168. package/dist/builtins/res/feed.diagram.js +2 -2
  169. package/dist/builtins/res/feed.diagram.js.map +1 -1
  170. package/dist/builtins/res/feed.js +3 -1
  171. package/dist/builtins/res/feed.js.map +1 -1
  172. package/dist/builtins/res/feed.tree.d.ts +1 -1
  173. package/dist/builtins/res/feed.tree.js +1 -1
  174. package/dist/builtins/res/feed.tree.js.map +1 -1
  175. package/dist/builtins/res/files.d.ts +1 -1
  176. package/dist/builtins/res/files.js +1 -1
  177. package/dist/builtins/res/files.js.map +1 -1
  178. package/dist/builtins/res/gather.d.ts +1 -1
  179. package/dist/builtins/res/gather.js +1 -1
  180. package/dist/builtins/res/gather.js.map +1 -1
  181. package/dist/builtins/res/gather.store.js.map +1 -1
  182. package/dist/builtins/res/group.d.ts +1 -1
  183. package/dist/builtins/res/group.js +1 -1
  184. package/dist/builtins/res/group.js.map +1 -1
  185. package/dist/builtins/res/image.d.ts +1 -20
  186. package/dist/builtins/res/image.js +1 -2
  187. package/dist/builtins/res/image.js.map +1 -1
  188. package/dist/builtins/res/pipeline.d.ts +1 -1
  189. package/dist/builtins/res/pipeline.diagram.d.ts +1 -1
  190. package/dist/builtins/res/pipeline.diagram.js +2 -2
  191. package/dist/builtins/res/pipeline.diagram.js.map +1 -1
  192. package/dist/builtins/res/pipeline.js +3 -1
  193. package/dist/builtins/res/pipeline.js.map +1 -1
  194. package/dist/builtins/res/play.d.ts +1 -1
  195. package/dist/builtins/res/play.js +2 -1
  196. package/dist/builtins/res/play.js.map +1 -1
  197. package/dist/builtins/res/plugin.d.ts +1 -1
  198. package/dist/builtins/res/plugin.info.d.ts +1 -1
  199. package/dist/builtins/res/plugin.info.js +2 -1
  200. package/dist/builtins/res/plugin.info.js.map +1 -1
  201. package/dist/builtins/res/plugin.js +2 -2
  202. package/dist/builtins/res/plugin.js.map +1 -1
  203. package/dist/builtins/res/plugininstance.d.ts +1 -1
  204. package/dist/builtins/res/plugininstance.js +1 -1
  205. package/dist/builtins/res/plugininstance.js.map +1 -1
  206. package/dist/builtins/res/pluginmeta.d.ts +1 -1
  207. package/dist/builtins/res/pluginmeta.js +1 -1
  208. package/dist/builtins/res/pluginmeta.js.map +1 -1
  209. package/dist/builtins/res/record.d.ts +1 -1
  210. package/dist/builtins/res/record.js +1 -1
  211. package/dist/builtins/res/record.js.map +1 -1
  212. package/dist/builtins/res/tag.d.ts +1 -1
  213. package/dist/builtins/res/tag.js +1 -1
  214. package/dist/builtins/res/tag.js.map +1 -1
  215. package/dist/builtins/res/user.d.ts +1 -1
  216. package/dist/builtins/res/user.js +2 -1
  217. package/dist/builtins/res/user.js.map +1 -1
  218. package/dist/builtins/res/workflow.d.ts +1 -1
  219. package/dist/builtins/res/workflow.js +1 -1
  220. package/dist/builtins/res/workflow.js.map +1 -1
  221. package/dist/builtins/store.d.ts +1 -1
  222. package/dist/builtins/store.js +2 -1
  223. package/dist/builtins/store.js.map +1 -1
  224. package/dist/builtins/sys/cal.d.ts +1 -12
  225. package/dist/builtins/sys/cal.js +1 -1
  226. package/dist/builtins/sys/cal.js.map +1 -1
  227. package/dist/builtins/sys/context.d.ts +1 -1
  228. package/dist/builtins/sys/context.js +1 -1
  229. package/dist/builtins/sys/context.js.map +1 -1
  230. package/dist/builtins/sys/date.d.ts +1 -12
  231. package/dist/builtins/sys/date.js +1 -1
  232. package/dist/builtins/sys/date.js.map +1 -1
  233. package/dist/builtins/sys/fortune.d.ts +1 -11
  234. package/dist/builtins/sys/fortune.js +1 -1
  235. package/dist/builtins/sys/fortune.js.map +1 -1
  236. package/dist/builtins/sys/motd.d.ts +1 -18
  237. package/dist/builtins/sys/motd.js +3 -3
  238. package/dist/builtins/sys/motd.js.map +1 -1
  239. package/dist/builtins/sys/notes.d.ts +1 -2
  240. package/dist/builtins/sys/notes.js +1 -2
  241. package/dist/builtins/sys/notes.js.map +1 -1
  242. package/dist/builtins/sys/physicalmode.d.ts +1 -1
  243. package/dist/builtins/sys/physicalmode.js +1 -1
  244. package/dist/builtins/sys/physicalmode.js.map +1 -1
  245. package/dist/builtins/sys/timing.d.ts +1 -1
  246. package/dist/builtins/sys/timing.js +1 -1
  247. package/dist/builtins/sys/timing.js.map +1 -1
  248. package/dist/builtins/sys/version.d.ts +1 -7
  249. package/dist/builtins/sys/version.js +1 -1
  250. package/dist/builtins/sys/version.js.map +1 -1
  251. package/dist/builtins/sys/weather.d.ts +1 -1
  252. package/dist/builtins/sys/weather.js +1 -1
  253. package/dist/builtins/sys/weather.js.map +1 -1
  254. package/dist/builtins/sys/whoami.d.ts +1 -1
  255. package/dist/builtins/sys/whoami.js +2 -1
  256. package/dist/builtins/sys/whoami.js.map +1 -1
  257. package/dist/builtins/utils.d.ts +2 -19
  258. package/dist/builtins/utils.js +5 -55
  259. package/dist/builtins/utils.js.map +1 -1
  260. package/dist/builtins/wildcard.d.ts +4 -53
  261. package/dist/builtins/wildcard.js +3 -177
  262. package/dist/builtins/wildcard.js.map +1 -1
  263. package/dist/chris/backend.d.ts +22 -0
  264. package/dist/chris/backend.js +102 -0
  265. package/dist/chris/backend.js.map +1 -0
  266. package/dist/chris/binEntry.js.map +1 -0
  267. package/dist/chris/binMount.d.ts +60 -0
  268. package/dist/chris/binMount.js +154 -0
  269. package/dist/chris/binMount.js.map +1 -0
  270. package/dist/{core → chris}/chiliDelegate.d.ts +1 -1
  271. package/dist/{core → chris}/chiliDelegate.js +1 -1
  272. package/dist/chris/chiliDelegate.js.map +1 -0
  273. package/dist/chris/chrisCommands.d.ts +14 -0
  274. package/dist/chris/chrisCommands.js +168 -0
  275. package/dist/chris/chrisCommands.js.map +1 -0
  276. package/dist/chris/commandFallback.d.ts +3 -0
  277. package/dist/chris/commandFallback.js +113 -0
  278. package/dist/chris/commandFallback.js.map +1 -0
  279. package/dist/chris/completion.d.ts +3 -0
  280. package/dist/chris/completion.js +100 -0
  281. package/dist/chris/completion.js.map +1 -0
  282. package/dist/chris/connect.js.map +1 -0
  283. package/dist/chris/debug.d.ts +10 -0
  284. package/dist/chris/debug.js +9 -0
  285. package/dist/chris/debug.js.map +1 -0
  286. package/dist/chris/files.d.ts +16 -0
  287. package/dist/chris/files.js +141 -0
  288. package/dist/chris/files.js.map +1 -0
  289. package/dist/chris/filesystem.d.ts +3 -0
  290. package/dist/chris/filesystem.js +57 -0
  291. package/dist/chris/filesystem.js.map +1 -0
  292. package/dist/chris/help.d.ts +16 -0
  293. package/dist/chris/help.js +1193 -0
  294. package/dist/chris/help.js.map +1 -0
  295. package/dist/chris/jobsState.js.map +1 -0
  296. package/dist/chris/mounts.d.ts +7 -0
  297. package/dist/chris/mounts.js +34 -0
  298. package/dist/chris/mounts.js.map +1 -0
  299. package/dist/chris/navigation.d.ts +40 -0
  300. package/dist/chris/navigation.js +160 -0
  301. package/dist/chris/navigation.js.map +1 -0
  302. package/dist/{core → chris}/promptContext.d.ts +2 -2
  303. package/dist/{core → chris}/promptContext.js +3 -3
  304. package/dist/chris/promptContext.js.map +1 -0
  305. package/dist/chris/references.d.ts +14 -0
  306. package/dist/chris/references.js +113 -0
  307. package/dist/chris/references.js.map +1 -0
  308. package/dist/chris/tasks.d.ts +31 -0
  309. package/dist/chris/tasks.js +55 -0
  310. package/dist/chris/tasks.js.map +1 -0
  311. package/dist/chris/universeLayout.js.map +1 -0
  312. package/dist/chris/watch.d.ts +3 -0
  313. package/dist/chris/watch.js +15 -0
  314. package/dist/chris/watch.js.map +1 -0
  315. package/dist/core/answerKinds.d.ts +32 -0
  316. package/dist/core/answerKinds.js +56 -0
  317. package/dist/core/answerKinds.js.map +1 -0
  318. package/dist/core/backend.d.ts +261 -0
  319. package/dist/core/backend.js +32 -0
  320. package/dist/core/backend.js.map +1 -0
  321. package/dist/core/commandOrder.d.ts +16 -0
  322. package/dist/core/commandOrder.js +17 -0
  323. package/dist/core/commandOrder.js.map +1 -0
  324. package/dist/core/commandRegistry.d.ts +120 -0
  325. package/dist/core/commandRegistry.js +124 -0
  326. package/dist/core/commandRegistry.js.map +1 -0
  327. package/dist/core/coreCommands.d.ts +16 -0
  328. package/dist/core/coreCommands.js +156 -0
  329. package/dist/core/coreCommands.js.map +1 -0
  330. package/dist/core/dispatch.d.ts +2 -19
  331. package/dist/core/dispatch.js +86 -447
  332. package/dist/core/dispatch.js.map +1 -1
  333. package/dist/core/elevation.d.ts +5 -5
  334. package/dist/core/elevation.js +12 -7
  335. package/dist/core/elevation.js.map +1 -1
  336. package/dist/core/engine.d.ts +28 -18
  337. package/dist/core/engine.js +44 -119
  338. package/dist/core/engine.js.map +1 -1
  339. package/dist/core/errorText.d.ts +14 -0
  340. package/dist/core/errorText.js +26 -0
  341. package/dist/core/errorText.js.map +1 -0
  342. package/dist/core/expansion.d.ts +0 -2
  343. package/dist/core/expansion.js +43 -101
  344. package/dist/core/expansion.js.map +1 -1
  345. package/dist/core/fileRefusal.d.ts +4 -15
  346. package/dist/core/fileRefusal.js +4 -26
  347. package/dist/core/fileRefusal.js.map +1 -1
  348. package/dist/core/filesystem.d.ts +27 -0
  349. package/dist/core/filesystem.js +45 -0
  350. package/dist/core/filesystem.js.map +1 -0
  351. package/dist/core/handlerRun.d.ts +30 -0
  352. package/dist/core/handlerRun.js +34 -0
  353. package/dist/core/handlerRun.js.map +1 -0
  354. package/dist/core/paths.d.ts +18 -0
  355. package/dist/core/paths.js +49 -0
  356. package/dist/core/paths.js.map +1 -0
  357. package/dist/core/preprocess.d.ts +1 -1
  358. package/dist/core/preprocess.js +1 -1
  359. package/dist/core/preprocess.js.map +1 -1
  360. package/dist/core/sink.d.ts +3 -25
  361. package/dist/core/sink.js +0 -8
  362. package/dist/core/sink.js.map +1 -1
  363. package/dist/core/surface.d.ts +3 -179
  364. package/dist/core/surface.js.map +1 -1
  365. package/dist/core/taskWatch.d.ts +42 -0
  366. package/dist/core/taskWatch.js +142 -0
  367. package/dist/core/taskWatch.js.map +1 -0
  368. package/dist/core/tasks.d.ts +46 -0
  369. package/dist/core/tasks.js +102 -0
  370. package/dist/core/tasks.js.map +1 -0
  371. package/dist/core.d.ts +22 -0
  372. package/dist/core.js +23 -0
  373. package/dist/core.js.map +1 -0
  374. package/dist/index.d.ts +8 -5
  375. package/dist/index.js +17 -5
  376. package/dist/index.js.map +1 -1
  377. package/dist/lib/completer/index.js +41 -99
  378. package/dist/lib/completer/index.js.map +1 -1
  379. package/dist/lib/prefetch.js +2 -2
  380. package/dist/lib/prefetch.js.map +1 -1
  381. package/dist/lib/vfs/listing.d.ts +1 -1
  382. package/dist/lib/vfs/providers/static.d.ts +15 -6
  383. package/dist/lib/vfs/providers/static.js +20 -43
  384. package/dist/lib/vfs/providers/static.js.map +1 -1
  385. package/dist/lib/vfs/providers/static_content.d.ts +4 -4
  386. package/dist/lib/vfs/providers/static_content.js +4 -24
  387. package/dist/lib/vfs/providers/static_content.js.map +1 -1
  388. package/dist/lib/vfs/vfs.d.ts +11 -2
  389. package/dist/lib/vfs/vfs.js +90 -51
  390. package/dist/lib/vfs/vfs.js.map +1 -1
  391. package/dist/lib/wildcard.d.ts +57 -0
  392. package/dist/lib/wildcard.js +183 -0
  393. package/dist/lib/wildcard.js.map +1 -0
  394. package/dist/notes.json +1 -1
  395. package/dist/null/backend.d.ts +29 -0
  396. package/dist/null/backend.js +41 -0
  397. package/dist/null/backend.js.map +1 -0
  398. package/dist/session/answer.d.ts +4 -4
  399. package/dist/session/answer.js +0 -2
  400. package/dist/session/answer.js.map +1 -1
  401. package/dist/session/index.d.ts +12 -10
  402. package/dist/session/index.js +9 -38
  403. package/dist/session/index.js.map +1 -1
  404. package/package.json +12 -6
  405. package/dist/builtins/fs/folderExists.d.ts +0 -8
  406. package/dist/builtins/fs/folderExists.js +0 -67
  407. package/dist/builtins/fs/folderExists.js.map +0 -1
  408. package/dist/command-keys.d.ts +0 -8
  409. package/dist/command-keys.js +0 -37
  410. package/dist/command-keys.js.map +0 -1
  411. package/dist/core/chiliDelegate.js.map +0 -1
  412. package/dist/core/connect.js.map +0 -1
  413. package/dist/core/jobsState.js.map +0 -1
  414. package/dist/core/promptContext.js.map +0 -1
  415. package/dist/lib/vfs/providers/binEntry.js.map +0 -1
  416. package/dist/universe/universeLayout.js.map +0 -1
  417. /package/dist/{lib/vfs/providers → chris}/binEntry.d.ts +0 -0
  418. /package/dist/{lib/vfs/providers → chris}/binEntry.js +0 -0
  419. /package/dist/{core → chris}/connect.d.ts +0 -0
  420. /package/dist/{core → chris}/connect.js +0 -0
  421. /package/dist/{core → chris}/jobsState.d.ts +0 -0
  422. /package/dist/{core → chris}/jobsState.js +0 -0
  423. /package/dist/{universe → chris}/universeLayout.d.ts +0 -0
  424. /package/dist/{universe → chris}/universeLayout.js +0 -0
@@ -2,21 +2,19 @@
2
2
  * @file Static VFS Content Handler.
3
3
  *
4
4
  * Implements specialized virtual file reading and content generation
5
- * for static command directories (/bin, /usr/bin).
5
+ * for the core's static directories (/usr/bin, /usr/games, /usr/share/doc).
6
6
  *
7
7
  * @module
8
8
  */
9
- import { Ok, Err, errorStack } from '@fnndsc/cumin';
10
9
  import { commandHelp_get } from '../../../builtins/help.js';
11
- import { pluginInfo_build, pluginInfoText_render, pluginSpecifier_parse, } from '../../../builtins/res/plugin.info.js';
12
- import { binPipelineSummary_render, binPipelineSummary_try, } from './binEntry.js';
10
+ import { Ok, Err, errorStack } from '@fnndsc/fond';
13
11
  /**
14
12
  * Reads virtual file content under command and builtin static paths.
15
13
  *
16
- * Handles help text formatting for /usr/bin and fetches parameter specifications for /bin plugins.
14
+ * A builtin's help for /usr/bin and /usr/games, and the release notes for /usr/share/doc.
17
15
  *
18
16
  * @param pathStr - The absolute virtual path of the file to read.
19
- * @param prefix - The prefix of the calling provider (e.g. '/usr/bin', '/bin').
17
+ * @param prefix - The prefix of the calling provider (e.g. '/usr/bin').
20
18
  * @returns Promise resolving to a Result containing the file contents as a string.
21
19
  */
22
20
  export async function staticVfs_read(pathStr, prefix) {
@@ -42,24 +40,6 @@ export async function staticVfs_read(pathStr, prefix) {
42
40
  errorStack.stack_push("error", `No such document: ${effectivePath}`);
43
41
  return Err();
44
42
  }
45
- if (prefix === "/bin") {
46
- const commandName = effectivePath.substring("/bin/".length);
47
- const pipelineSummary = binPipelineSummary_try(commandName);
48
- if (pipelineSummary !== null)
49
- return Ok(binPipelineSummary_render(pipelineSummary));
50
- const specifier = pluginSpecifier_parse(commandName);
51
- if (specifier === null) {
52
- errorStack.stack_push("error", `Unknown /bin entry: ${commandName}`);
53
- return Err();
54
- }
55
- // The manual is a projection of the plugin model — the same facts
56
- // `plugin info` puts on the wire, so a terminal and a graphical
57
- // surface cannot end up describing different plugins.
58
- const built = await pluginInfo_build(specifier);
59
- if (!built.ok)
60
- return Err();
61
- return Ok(pluginInfoText_render(built.value));
62
- }
63
43
  errorStack.stack_push("error", `File not found: ${pathStr}`);
64
44
  return Err();
65
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"static_content.js","sourceRoot":"","sources":["../../../../src/lib/vfs/providers/static_content.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"static_content.js","sourceRoot":"","sources":["../../../../src/lib/vfs/providers/static_content.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAU,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,MAAc;IAClE,IAAI,CAAC;QACH,IAAI,aAAa,GAAW,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC;QAC9E,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5D,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;YACrD,MAAM,WAAW,GAAW,aAAa,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;YACzE,MAAM,OAAO,GAAuB,eAAe,CAAC,WAAW,CAAC,CAAC;YACjE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;YACrB,CAAC;YACD,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,kCAAkC,WAAW,EAAE,CAAC,CAAC;YAChF,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;QAED,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;YAChC,IAAI,aAAa,KAAK,qBAAqB,EAAE,CAAC;gBAC5C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;gBACrE,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;YACzB,CAAC;YACD,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,qBAAqB,aAAa,EAAE,CAAC,CAAC;YACrE,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;QAED,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,mBAAmB,OAAO,EAAE,CAAC,CAAC;QAC7D,OAAO,GAAG,EAAE,CAAC;IACf,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,GAAG,GAAW,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3E,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,qCAAqC,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC;QACtF,OAAO,GAAG,EAAE,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAe,EAAE,MAAc;IACxE,MAAM,GAAG,GAAmB,MAAM,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClE,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;QACX,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,GAAG,EAAE,CAAC;AACf,CAAC"}
@@ -1,5 +1,5 @@
1
- import type { ListingItem } from '@fnndsc/menu';
2
- import { Result, type CommandEnvelope } from '@fnndsc/cumin';
1
+ import { type ListingItem, type CommandEnvelope } from '@fnndsc/menu';
2
+ import { Result } from '@fnndsc/fond';
3
3
  /**
4
4
  * Virtual File System Router.
5
5
  * Dispatches operations to Virtual or Native providers.
@@ -66,6 +66,15 @@ export declare class VFS {
66
66
  * @param options - Sort options forwarded to the parent listing.
67
67
  */
68
68
  private directoryEntry_get;
69
+ /**
70
+ * Finds a path's own entry in its parent's listing, read afresh when it is
71
+ * not kept: the answer to `ls FILE` when the path does not list as a
72
+ * folder.
73
+ *
74
+ * @param absolutePath - The path that did not list.
75
+ * @returns Its entry when the parent holds it and it is not a folder, else null.
76
+ */
77
+ private entryFromParent_fetch;
69
78
  /**
70
79
  * Finds a non-directory target in its cached parent listing.
71
80
  *
@@ -1,22 +1,22 @@
1
1
  /**
2
2
  * @file Virtual File System Router.
3
3
  *
4
- * Handles path resolution and dispatching to appropriate file system providers
5
- * (native ChRIS or virtual overlays like /bin).
4
+ * Handles path resolution and dispatching to the session's filesystem: the
5
+ * backend's mounts and fallback, and the core's own (`/usr`).
6
6
  *
7
7
  * @module
8
8
  */
9
- import { vfsDispatcher } from '@fnndsc/salsa';
10
9
  import { session } from '../../session/index.js';
11
10
  import chalk from 'chalk';
12
11
  import * as path from 'path';
13
12
  import { ambient_publish, ambient_hasListeners } from '../../core/ambient.js';
14
- import { grid_render, long_render } from '@fnndsc/chili/views/ls.js';
15
- import { list_applySort } from '@fnndsc/chili/utils/sort.js';
16
- import { listCache_get, Ok, Err, errorStack, feedTags_byFeed, envelope_ok, envelope_error } from '@fnndsc/cumin';
13
+ import { envelope_ok, envelope_error } from '@fnndsc/menu';
14
+ import { listingCache_get, listingCache_holds, vfsDispatcher_get } from '../../core/filesystem.js';
17
15
  import { spinner } from '../spinner.js';
18
- import { error_stripDebugPrefix } from '../../builtins/utils.js';
16
+ import { error_stripDebugPrefix } from '../../core/errorText.js';
19
17
  import { listingItemsFromVfs_make } from './listing.js';
18
+ import { Ok, Err, errorStack, grid_render, long_render, listingItems_sort, LISTING_LOOK_PLAIN } from '@fnndsc/fond';
19
+ import { backendInstalled_get } from '../../core/backend.js';
20
20
  export class VFS {
21
21
  /**
22
22
  * Gets data for a directory (Virtual or Native).
@@ -44,11 +44,11 @@ export class VFS {
44
44
  if (inflight)
45
45
  return inflight;
46
46
  const run = (async () => {
47
- const fetched = await vfsDispatcher.list(effectivePath, {});
47
+ const fetched = await vfsDispatcher_get().list(effectivePath, {});
48
48
  if (!fetched.ok)
49
49
  return;
50
50
  const items = listingItemsFromVfs_make(fetched.value);
51
- listCache_get().cache_set(effectivePath, items);
51
+ listingCache_get().cache_set(effectivePath, items);
52
52
  ambient_publish({
53
53
  kind: 'envelope',
54
54
  envelope: { status: 'ok', rendered: '', model: { kind: 'fs.listing', data: [{ path: effectivePath, items, fresh: true }] } },
@@ -82,18 +82,18 @@ export class VFS {
82
82
  const entry = await this.directoryEntry_get(effectivePath, options);
83
83
  return entry.ok ? Ok({ path: effectivePath, items: entry.value, fresh: true }) : Err();
84
84
  }
85
- // /proc paths are backed by ProcCache which manages its own freshness —
86
- // skip listCache entirely so proc refresh and live status reads are visible.
87
- const isProcPath = effectivePath.startsWith('/proc');
88
- // Check cache first (not for /proc paths)
89
- const listCache = listCache_get();
90
- if (!isProcPath) {
85
+ // A path the backend keeps its own freshness for (ChRIS: /proc) skips
86
+ // the listing cache entirely, so its refreshes and live reads show.
87
+ const cacheable = listingCache_holds(effectivePath);
88
+ // Check cache first
89
+ const listCache = listingCache_get();
90
+ if (cacheable) {
91
91
  const cached = listCache.cache_get(effectivePath);
92
92
  if (cached && (cached.fresh || ambient_hasListeners())) {
93
93
  if (!cached.fresh)
94
94
  void this.listing_revalidate(effectivePath);
95
95
  const sortField = options.sort || 'name';
96
- const sortedItems = list_applySort(cached.data, sortField, options.reverse);
96
+ const sortedItems = listingItems_sort(cached.data, sortField, options.reverse);
97
97
  return Ok({ path: effectivePath, items: sortedItems, fresh: cached.fresh });
98
98
  }
99
99
  // Shell wildcard expansion reads and caches the parent directory before
@@ -105,15 +105,25 @@ export class VFS {
105
105
  }
106
106
  }
107
107
  // Delegate path queries to the unified vfsDispatcher (which handles both virtual and native paths)
108
- const vfsResult = await vfsDispatcher.list(effectivePath, options);
108
+ const beforeList = errorStack.checkpoint_mark();
109
+ const vfsResult = await vfsDispatcher_get().list(effectivePath, options);
109
110
  if (vfsResult.ok) {
110
111
  const items = listingItemsFromVfs_make(vfsResult.value);
111
- // Cache the results (not for /proc paths)
112
- if (!isProcPath) {
112
+ // Cache the results, where the backend lets them be kept
113
+ if (cacheable) {
113
114
  listCache.cache_set(effectivePath, items);
114
115
  }
115
116
  return Ok({ path: effectivePath, items, fresh: true });
116
117
  }
118
+ // `ls FILE` names the file, as POSIX ls does: a path that will not
119
+ // list as a folder is looked for in its parent, and an entry that is
120
+ // not a folder is the answer. The failed listing's complaint goes with
121
+ // it; a path the parent does not hold still fails as it did.
122
+ const entry = await this.entryFromParent_fetch(effectivePath);
123
+ if (entry !== null) {
124
+ errorStack.checkpoint_drain(beforeList);
125
+ return Ok({ path: effectivePath, items: [entry], fresh: true });
126
+ }
117
127
  return Err();
118
128
  }
119
129
  catch (error) {
@@ -136,14 +146,17 @@ export class VFS {
136
146
  return Ok([{ name: '/', type: 'vfs', size: 0, owner: 'root', date: '' }]);
137
147
  }
138
148
  // Fetch parent listing (use cache when available)
139
- const listCache = listCache_get();
149
+ const listCache = listingCache_get();
140
150
  let parentItems = null;
141
151
  const cached = listCache.cache_get(parentPath);
142
152
  if (cached) {
143
153
  parentItems = cached.data;
144
154
  }
145
155
  else {
146
- const parentResult = await vfsDispatcher.list(parentPath, options);
156
+ // The parent is read only to find one name; what it could not read is not this answer's.
157
+ const parentMark = errorStack.checkpoint_mark();
158
+ const parentResult = await vfsDispatcher_get().list(parentPath, options);
159
+ errorStack.checkpoint_drain(parentMark);
147
160
  if (parentResult.ok) {
148
161
  parentItems = listingItemsFromVfs_make(parentResult.value);
149
162
  listCache.cache_set(parentPath, parentItems);
@@ -154,8 +167,48 @@ export class VFS {
154
167
  if (match)
155
168
  return Ok([match]);
156
169
  }
157
- // Fallback: synthesize an entry from the path name
158
- return Ok([{ name: baseName, type: 'dir', size: 0, owner: 'system', date: '' }]);
170
+ // The parent does not name it. A path that lists is a folder all the
171
+ // same (a mount the parent's listing does not show); one that does not
172
+ // is not there, and saying so is the answer: a folder made up from the
173
+ // path's name read as one that exists, to `ls -d` and to `du` alike.
174
+ const mark = errorStack.checkpoint_mark();
175
+ const itself = await vfsDispatcher_get().list(absolutePath, options);
176
+ errorStack.checkpoint_drain(mark);
177
+ if (itself.ok) {
178
+ return Ok([{ name: baseName, type: 'dir', size: 0, owner: 'system', date: '' }]);
179
+ }
180
+ errorStack.stack_push('error', `Cannot list ${absolutePath}: No such file or directory`);
181
+ return Err();
182
+ }
183
+ /**
184
+ * Finds a path's own entry in its parent's listing, read afresh when it is
185
+ * not kept: the answer to `ls FILE` when the path does not list as a
186
+ * folder.
187
+ *
188
+ * @param absolutePath - The path that did not list.
189
+ * @returns Its entry when the parent holds it and it is not a folder, else null.
190
+ */
191
+ async entryFromParent_fetch(absolutePath) {
192
+ if (absolutePath === '/')
193
+ return null;
194
+ const baseName = path.posix.basename(absolutePath);
195
+ const parentPath = path.posix.dirname(absolutePath);
196
+ let parentItems = listingCache_get().cache_get(parentPath)?.data ?? null;
197
+ if (parentItems === null) {
198
+ const parentMark = errorStack.checkpoint_mark();
199
+ const parent = await vfsDispatcher_get().list(parentPath, {});
200
+ // The parent was only asked to find one name; what it could not read is not this listing's.
201
+ errorStack.checkpoint_drain(parentMark);
202
+ if (!parent.ok)
203
+ return null;
204
+ parentItems = listingItemsFromVfs_make(parent.value);
205
+ if (listingCache_holds(parentPath))
206
+ listingCache_get().cache_set(parentPath, parentItems);
207
+ }
208
+ const item = parentItems.find((candidate) => candidate.name === baseName);
209
+ if (!item || item.type === 'dir' || item.type === 'vfs' || item.type === 'job')
210
+ return null;
211
+ return item;
159
212
  }
160
213
  /**
161
214
  * Finds a non-directory target in its cached parent listing.
@@ -166,7 +219,7 @@ export class VFS {
166
219
  leafFromParentCache_get(absolutePath) {
167
220
  const baseName = path.posix.basename(absolutePath);
168
221
  const parentPath = path.posix.dirname(absolutePath);
169
- const cached = listCache_get().cache_get(parentPath);
222
+ const cached = listingCache_get().cache_get(parentPath);
170
223
  if (!cached)
171
224
  return null;
172
225
  const item = cached.data.find((candidate) => candidate.name === baseName);
@@ -198,7 +251,7 @@ export class VFS {
198
251
  // A cache miss will wait on the wire; a stale entry may be served at
199
252
  // once (listing_get decides, and revalidates behind it where a host can
200
253
  // carry the refresh).
201
- const isCacheMiss = !listCache_get().cache_get(effectivePath);
254
+ const isCacheMiss = !listingCache_get().cache_get(effectivePath);
202
255
  // For cache miss, show loading indicator after 500ms timeout
203
256
  let spinnerStarted = false; // Flag to track if spinner was actually started
204
257
  let spinnerDelayTimeout = null;
@@ -209,11 +262,11 @@ export class VFS {
209
262
  }, 500);
210
263
  }
211
264
  // Only this listing's walk may name a parent whose links went unchecked.
212
- const { pathMapper_get } = await import('@fnndsc/chili/utils');
213
- pathMapper_get().blindParents_take();
265
+ const unreadLinks_take = async () => (await backendInstalled_get()?.vfs?.unreadLinks_take?.()) ?? [];
266
+ await unreadLinks_take();
214
267
  // Fetch data (may be from cache)
215
268
  const listing = await this.listing_get(targetPath, options);
216
- const blindParents = pathMapper_get().blindParents_take();
269
+ const blindParents = await unreadLinks_take();
217
270
  const result = listing.ok ? Ok(listing.value.items) : Err();
218
271
  // Clear loading timeout and indicator
219
272
  if (spinnerDelayTimeout) {
@@ -246,9 +299,10 @@ export class VFS {
246
299
  }
247
300
  // Render based on options. A long listing over feeds shows their tags:
248
301
  // one map for the whole listing, never a read per feed.
302
+ const look = backendInstalled_get()?.listingLook ?? LISTING_LOOK_PLAIN;
249
303
  let rendered = options.long
250
- ? `${long_render(await feedTags_annotate(result.value), { human: !!options.human })}\n`
251
- : `${grid_render(result.value, { oneColumn: !!options.oneColumn })}\n`;
304
+ ? `${long_render(await longRows_annotate(result.value), { human: !!options.human }, look)}\n`
305
+ : `${grid_render(result.value, { oneColumn: !!options.oneColumn }, look)}\n`;
252
306
  // Served stale: say so. The refresh is already running behind this
253
307
  // answer and reaches every surface as an ambient listing.
254
308
  if (listing.ok && !listing.value.fresh) {
@@ -266,29 +320,14 @@ export class VFS {
266
320
  */
267
321
  export const vfs = new VFS();
268
322
  /**
269
- * Hangs each feed's tags on its row, for a long listing that holds feeds
270
- * (`feed_N` rows). A listing with no feed in it reads nothing; a map that
271
- * cannot be read leaves the rows as they were.
323
+ * What a long listing's rows carry beyond the listing, from the backend
324
+ * (ChRIS: a feed's tags).
272
325
  *
273
326
  * @param items - The rows.
274
- * @returns The rows, feeds carrying their tags.
327
+ * @returns The rows, annotated.
275
328
  */
276
- async function feedTags_annotate(items) {
277
- const feedOf = (name) => {
278
- const match = name.match(/^feed_(\d+)$/);
279
- return match === null ? null : Number(match[1]);
280
- };
281
- if (!items.some((item) => feedOf(item.name) !== null))
282
- return items;
283
- const map = await feedTags_byFeed();
284
- if (!map.ok) {
285
- errorStack.stack_pop();
286
- return items;
287
- }
288
- return items.map((item) => {
289
- const feedId = feedOf(item.name);
290
- const tags = feedId === null ? undefined : map.value.get(feedId);
291
- return tags === undefined ? item : { ...item, tags };
292
- });
329
+ async function longRows_annotate(items) {
330
+ const annotate = backendInstalled_get()?.vfs?.longRows_annotate;
331
+ return annotate === undefined ? items : await annotate(items);
293
332
  }
294
333
  //# sourceMappingURL=vfs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vfs.js","sourceRoot":"","sources":["../../../src/lib/vfs/vfs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vfs.js","sourceRoot":"","sources":["../../../src/lib/vfs/vfs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { ListingItem } from '@fnndsc/menu';
2
+ import { ShellWord } from './parser.js';
3
+ import { Result } from '@fnndsc/fond';
4
+ /**
5
+ * Checks if a string contains wildcard characters.
6
+ *
7
+ * @param arg - The argument to check.
8
+ * @returns True if the argument contains wildcards.
9
+ */
10
+ export declare function string_checkHasWildcard(arg: string): boolean;
11
+ /** A VFS item selected by wildcard expansion. */
12
+ export interface WildcardMatch {
13
+ path: string;
14
+ type: ListingItem['type'];
15
+ }
16
+ /**
17
+ * Expands one quote-aware shell word against the ChRIS filesystem.
18
+ *
19
+ * @param word - Parsed shell word.
20
+ * @returns Expanded words, or the original word when it has no match.
21
+ */
22
+ export declare function shellWord_expand(word: ShellWord): Promise<Result<ShellWord[]>>;
23
+ /**
24
+ * Expands selected quote-aware shell words in argument order.
25
+ *
26
+ * @param words - Parsed shell words.
27
+ * @param eligible - Predicate that preserves explicit cross-realm operands.
28
+ * @returns Expanded words, retaining literal words when no path matches.
29
+ */
30
+ export declare function shellWords_expand(words: readonly ShellWord[], eligible: (word: ShellWord, index: number) => boolean): Promise<Result<ShellWord[]>>;
31
+ /**
32
+ * Expands a wildcard pattern against the current directory with item type.
33
+ *
34
+ * @param pattern - The glob pattern (e.g., "*.ts", "test*.json").
35
+ * @returns A Promise resolving to Result<WildcardMatch[]>.
36
+ * Ok([]) = no matches (not an error).
37
+ * Err(...) = couldn't expand (API failure, permission denied, etc.).
38
+ */
39
+ export declare function wildcard_expandMatches(pattern: string): Promise<Result<WildcardMatch[]>>;
40
+ /**
41
+ * Expands a wildcard pattern against the current directory.
42
+ *
43
+ * @param pattern - The glob pattern (e.g., "*.ts", "test*.json").
44
+ * @returns A Promise resolving to Result<string[]>.
45
+ * Ok([]) = no matches (not an error).
46
+ * Err(...) = couldn't expand (API failure, permission denied, etc.).
47
+ */
48
+ export declare function wildcard_expand(pattern: string): Promise<Result<string[]>>;
49
+ /**
50
+ * Expands all wildcards in an argument list.
51
+ *
52
+ * @param args - The argument list potentially containing wildcards.
53
+ * @returns A Promise resolving to Result<string[]>.
54
+ * On error expanding any pattern, returns the error.
55
+ * Empty matches return the original pattern.
56
+ */
57
+ export declare function wildcards_expandAll(args: string[]): Promise<Result<string[]>>;
@@ -0,0 +1,183 @@
1
+ /**
2
+ * @file Wildcard expansion for shell commands.
3
+ *
4
+ * Matches glob patterns against the session's filesystem.
5
+ *
6
+ * @module
7
+ */
8
+ import { minimatch } from 'minimatch';
9
+ import { listingItemsFromVfs_make } from './vfs/listing.js';
10
+ import { session } from '../session/index.js';
11
+ import { shellWord_literal, shellWord_unquoted } from './parser.js';
12
+ import { path_resolve } from '../core/paths.js';
13
+ import { backendInstalled_get } from '../core/backend.js';
14
+ import { listingCache_get, vfsDispatcher_get } from '../core/filesystem.js';
15
+ import { Ok, Err, errorStack } from '@fnndsc/fond';
16
+ /**
17
+ * Checks if a string contains wildcard characters.
18
+ *
19
+ * @param arg - The argument to check.
20
+ * @returns True if the argument contains wildcards.
21
+ */
22
+ export function string_checkHasWildcard(arg) {
23
+ return /[*?[\]]/.test(arg);
24
+ }
25
+ /**
26
+ * Expands a rendered pattern and its quote-aware minimatch pattern.
27
+ *
28
+ * @param value - Rendered shell-word value.
29
+ * @param globPattern - Quote-aware minimatch pattern.
30
+ * @returns A Promise resolving to Result<WildcardMatch[]>.
31
+ * Ok([]) = no matches (not an error).
32
+ * Err(...) = couldn't expand (API failure, permission denied, etc.).
33
+ */
34
+ async function wildcardMatches_expand(value, globPattern) {
35
+ try {
36
+ // Get current directory
37
+ const cwd = await session.getCWD();
38
+ const resolvedValue = await path_resolve(value);
39
+ const resolvedPattern = await path_resolve(globPattern);
40
+ // Handle patterns with directory components (e.g., "data/*.txt")
41
+ let searchDir = cwd;
42
+ let physicalSearchDir = cwd;
43
+ let matchPattern = resolvedPattern;
44
+ // Resolve the non-wildcard parent directory before listing. This gives
45
+ // `~/...` its normal meaning and follows a CFS `.chrislink` parent while
46
+ // retaining the caller's logical spelling in the expanded result.
47
+ if (resolvedValue.includes('/')) {
48
+ const valueParts = resolvedValue.split('/');
49
+ const patternParts = resolvedPattern.split('/');
50
+ const lastPart = patternParts.pop() || '*';
51
+ valueParts.pop();
52
+ const dirPart = valueParts.join('/');
53
+ searchDir = dirPart || '/';
54
+ physicalSearchDir = (await backendInstalled_get()?.vfs?.path_physical?.(searchDir)) ?? searchDir;
55
+ matchPattern = lastPart;
56
+ }
57
+ // List files in the directory (check cache first)
58
+ let items = [];
59
+ const listCache = listingCache_get();
60
+ const cached = listCache.cache_get(physicalSearchDir);
61
+ if (cached) {
62
+ items = cached.data;
63
+ }
64
+ else {
65
+ const vfsResult = await vfsDispatcher_get().list(physicalSearchDir);
66
+ if (vfsResult.ok) {
67
+ items = listingItemsFromVfs_make(vfsResult.value);
68
+ listCache.cache_set(physicalSearchDir, items);
69
+ }
70
+ else {
71
+ return Err();
72
+ }
73
+ }
74
+ // Filter items by pattern
75
+ const matches = items
76
+ .filter((item) => minimatch(item.name, matchPattern))
77
+ .map((item) => {
78
+ // Return a full path if we searched a different directory.
79
+ const itemPath = searchDir !== cwd
80
+ ? `${searchDir}/${item.name}`.replace(/\/+/g, '/')
81
+ : item.name;
82
+ return {
83
+ path: itemPath,
84
+ type: item.type,
85
+ };
86
+ });
87
+ // Ok([]) for no matches (not an error)
88
+ return Ok(matches);
89
+ }
90
+ catch (error) {
91
+ const errorMsg = error instanceof Error ? error.message : String(error);
92
+ errorStack.stack_push("error", `Failed to expand wildcard '${value}': ${errorMsg}`);
93
+ return Err();
94
+ }
95
+ }
96
+ /**
97
+ * Expands one quote-aware shell word against the ChRIS filesystem.
98
+ *
99
+ * @param word - Parsed shell word.
100
+ * @returns Expanded words, or the original word when it has no match.
101
+ */
102
+ export async function shellWord_expand(word) {
103
+ if (!word.pathnameExpansion)
104
+ return Ok([word]);
105
+ const result = await wildcardMatches_expand(word.value, word.globPattern);
106
+ if (!result.ok)
107
+ return result;
108
+ if (result.value.length === 0)
109
+ return Ok([word]);
110
+ return Ok(result.value.map((match) => ({
111
+ ...shellWord_literal(match.path),
112
+ pathnameExpanded: true,
113
+ })));
114
+ }
115
+ /**
116
+ * Expands selected quote-aware shell words in argument order.
117
+ *
118
+ * @param words - Parsed shell words.
119
+ * @param eligible - Predicate that preserves explicit cross-realm operands.
120
+ * @returns Expanded words, retaining literal words when no path matches.
121
+ */
122
+ export async function shellWords_expand(words, eligible) {
123
+ const expanded = [];
124
+ for (const [index, word] of words.entries()) {
125
+ if (!eligible(word, index)) {
126
+ expanded.push(word);
127
+ continue;
128
+ }
129
+ const result = await shellWord_expand(word);
130
+ if (!result.ok)
131
+ return result;
132
+ expanded.push(...result.value);
133
+ }
134
+ return Ok(expanded);
135
+ }
136
+ /**
137
+ * Expands a wildcard pattern against the current directory with item type.
138
+ *
139
+ * @param pattern - The glob pattern (e.g., "*.ts", "test*.json").
140
+ * @returns A Promise resolving to Result<WildcardMatch[]>.
141
+ * Ok([]) = no matches (not an error).
142
+ * Err(...) = couldn't expand (API failure, permission denied, etc.).
143
+ */
144
+ export async function wildcard_expandMatches(pattern) {
145
+ if (!string_checkHasWildcard(pattern))
146
+ return Ok([{ path: pattern, type: 'file' }]);
147
+ return wildcardMatches_expand(pattern, pattern);
148
+ }
149
+ /**
150
+ * Expands a wildcard pattern against the current directory.
151
+ *
152
+ * @param pattern - The glob pattern (e.g., "*.ts", "test*.json").
153
+ * @returns A Promise resolving to Result<string[]>.
154
+ * Ok([]) = no matches (not an error).
155
+ * Err(...) = couldn't expand (API failure, permission denied, etc.).
156
+ */
157
+ export async function wildcard_expand(pattern) {
158
+ if (!string_checkHasWildcard(pattern))
159
+ return Ok([pattern]);
160
+ const word = shellWord_unquoted(pattern);
161
+ const result = await shellWord_expand(word);
162
+ if (!result.ok)
163
+ return result;
164
+ if (result.value.length === 1 && result.value[0] === word)
165
+ return Ok([]);
166
+ return Ok(result.value.map((match) => match.value));
167
+ }
168
+ /**
169
+ * Expands all wildcards in an argument list.
170
+ *
171
+ * @param args - The argument list potentially containing wildcards.
172
+ * @returns A Promise resolving to Result<string[]>.
173
+ * On error expanding any pattern, returns the error.
174
+ * Empty matches return the original pattern.
175
+ */
176
+ export async function wildcards_expandAll(args) {
177
+ const words = args.map((arg) => shellWord_unquoted(arg));
178
+ const result = await shellWords_expand(words, () => true);
179
+ if (!result.ok)
180
+ return result;
181
+ return Ok(result.value.map((word) => word.value));
182
+ }
183
+ //# sourceMappingURL=wildcard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wildcard.js","sourceRoot":"","sources":["../../src/lib/wildcard.ts"],"names":[],"mappings":"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"}