typescript-virtual-container 1.5.1 → 1.5.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 (614) hide show
  1. package/.vscode/settings.json +2 -2
  2. package/README.md +34 -28
  3. package/build.js +22 -0
  4. package/builds/{fortune-nyx-v1.5.1-directbash-k6.1.0.mjs → fortune-nyx-v1.5.3-directbash-k6.1.0.mjs} +187 -191
  5. package/builds/{fortune-nyx-v1.5.1-ssh-nosftp.js → fortune-nyx-v1.5.3-ssh-nosftp.js} +214 -218
  6. package/builds/{fortune-nyx-v1.5.1-ssh.cjs → fortune-nyx-v1.5.3-ssh.cjs} +142 -146
  7. package/builds/fortune-nyx-v1.5.3-web.min.js +17036 -0
  8. package/bun.lock +74 -0
  9. package/dist/Honeypot/index.d.ts +0 -1
  10. package/dist/Honeypot/index.js +0 -1
  11. package/dist/SSHClient/index.d.ts +0 -1
  12. package/dist/SSHClient/index.js +0 -1
  13. package/dist/SSHMimic/exec.d.ts +0 -1
  14. package/dist/SSHMimic/exec.js +0 -1
  15. package/dist/SSHMimic/executor.d.ts +0 -1
  16. package/dist/SSHMimic/executor.js +0 -1
  17. package/dist/SSHMimic/hostKey.d.ts +0 -1
  18. package/dist/SSHMimic/hostKey.js +0 -1
  19. package/dist/SSHMimic/index.d.ts +0 -1
  20. package/dist/SSHMimic/index.js +0 -1
  21. package/dist/SSHMimic/loginBanner.d.ts +0 -1
  22. package/dist/SSHMimic/loginBanner.js +0 -1
  23. package/dist/SSHMimic/loginFormat.d.ts +0 -1
  24. package/dist/SSHMimic/loginFormat.js +0 -1
  25. package/dist/SSHMimic/prompt.d.ts +0 -1
  26. package/dist/SSHMimic/prompt.js +0 -1
  27. package/dist/SSHMimic/sftp.d.ts +0 -1
  28. package/dist/SSHMimic/sftp.js +0 -1
  29. package/dist/VirtualFileSystem/binaryPack.d.ts +0 -1
  30. package/dist/VirtualFileSystem/binaryPack.js +0 -1
  31. package/dist/VirtualFileSystem/index.d.ts +0 -1
  32. package/dist/VirtualFileSystem/index.js +0 -1
  33. package/dist/VirtualFileSystem/internalTypes.d.ts +0 -1
  34. package/dist/VirtualFileSystem/internalTypes.js +0 -1
  35. package/dist/VirtualFileSystem/journal.d.ts +0 -1
  36. package/dist/VirtualFileSystem/journal.js +0 -1
  37. package/dist/VirtualFileSystem/path.d.ts +0 -1
  38. package/dist/VirtualFileSystem/path.js +0 -1
  39. package/dist/VirtualPackageManager/index.d.ts +0 -1
  40. package/dist/VirtualPackageManager/index.js +3 -14
  41. package/dist/VirtualShell/idleManager.d.ts +0 -1
  42. package/dist/VirtualShell/idleManager.js +0 -1
  43. package/dist/VirtualShell/index.d.ts +3 -2
  44. package/dist/VirtualShell/index.js +4 -2
  45. package/dist/VirtualShell/shell.d.ts +0 -1
  46. package/dist/VirtualShell/shell.js +0 -1
  47. package/dist/VirtualShell/shellParser.d.ts +0 -1
  48. package/dist/VirtualShell/shellParser.js +0 -1
  49. package/dist/VirtualUserManager/index.d.ts +0 -1
  50. package/dist/VirtualUserManager/index.js +0 -1
  51. package/dist/commands/adduser.d.ts +0 -1
  52. package/dist/commands/adduser.js +0 -1
  53. package/dist/commands/alias.d.ts +0 -1
  54. package/dist/commands/alias.js +0 -1
  55. package/dist/commands/apt.d.ts +0 -1
  56. package/dist/commands/apt.js +0 -1
  57. package/dist/commands/awk.d.ts +0 -1
  58. package/dist/commands/awk.js +0 -1
  59. package/dist/commands/base64.d.ts +0 -1
  60. package/dist/commands/base64.js +0 -1
  61. package/dist/commands/cat.d.ts +0 -1
  62. package/dist/commands/cat.js +0 -1
  63. package/dist/commands/cd.d.ts +0 -1
  64. package/dist/commands/cd.js +0 -1
  65. package/dist/commands/chmod.d.ts +0 -1
  66. package/dist/commands/chmod.js +0 -1
  67. package/dist/commands/clear.d.ts +0 -1
  68. package/dist/commands/clear.js +0 -1
  69. package/dist/commands/command-helpers.d.ts +0 -1
  70. package/dist/commands/command-helpers.js +0 -1
  71. package/dist/commands/cp.d.ts +0 -1
  72. package/dist/commands/cp.js +0 -1
  73. package/dist/commands/curl.d.ts +0 -1
  74. package/dist/commands/curl.js +0 -1
  75. package/dist/commands/cut.d.ts +0 -1
  76. package/dist/commands/cut.js +0 -1
  77. package/dist/commands/date.d.ts +0 -1
  78. package/dist/commands/date.js +0 -1
  79. package/dist/commands/declare.d.ts +0 -1
  80. package/dist/commands/declare.js +0 -1
  81. package/dist/commands/deluser.d.ts +0 -1
  82. package/dist/commands/deluser.js +0 -1
  83. package/dist/commands/df.d.ts +0 -1
  84. package/dist/commands/df.js +0 -1
  85. package/dist/commands/diff.d.ts +0 -1
  86. package/dist/commands/diff.js +0 -1
  87. package/dist/commands/dpkg.d.ts +0 -1
  88. package/dist/commands/dpkg.js +0 -1
  89. package/dist/commands/du.d.ts +0 -1
  90. package/dist/commands/du.js +0 -1
  91. package/dist/commands/echo.d.ts +0 -1
  92. package/dist/commands/echo.js +0 -1
  93. package/dist/commands/env.d.ts +0 -1
  94. package/dist/commands/env.js +0 -1
  95. package/dist/commands/exit.d.ts +0 -1
  96. package/dist/commands/exit.js +0 -1
  97. package/dist/commands/export.d.ts +0 -1
  98. package/dist/commands/export.js +0 -1
  99. package/dist/commands/find.d.ts +0 -1
  100. package/dist/commands/find.js +0 -1
  101. package/dist/commands/free.d.ts +0 -1
  102. package/dist/commands/free.js +0 -1
  103. package/dist/commands/grep.d.ts +0 -1
  104. package/dist/commands/grep.js +0 -1
  105. package/dist/commands/groups.d.ts +0 -1
  106. package/dist/commands/groups.js +0 -1
  107. package/dist/commands/gzip.d.ts +0 -1
  108. package/dist/commands/gzip.js +0 -1
  109. package/dist/commands/head.d.ts +0 -1
  110. package/dist/commands/head.js +0 -1
  111. package/dist/commands/help.d.ts +0 -1
  112. package/dist/commands/help.js +0 -1
  113. package/dist/commands/helpers.d.ts +0 -1
  114. package/dist/commands/helpers.js +0 -1
  115. package/dist/commands/history.d.ts +0 -1
  116. package/dist/commands/history.js +0 -1
  117. package/dist/commands/hostname.d.ts +0 -1
  118. package/dist/commands/hostname.js +0 -1
  119. package/dist/commands/htop.d.ts +0 -1
  120. package/dist/commands/htop.js +0 -1
  121. package/dist/commands/id.d.ts +0 -1
  122. package/dist/commands/id.js +0 -1
  123. package/dist/commands/index.d.ts +0 -1
  124. package/dist/commands/index.js +0 -1
  125. package/dist/commands/kill.d.ts +0 -1
  126. package/dist/commands/kill.js +0 -1
  127. package/dist/commands/ln.d.ts +0 -1
  128. package/dist/commands/ln.js +0 -1
  129. package/dist/commands/ls.d.ts +0 -1
  130. package/dist/commands/ls.js +0 -1
  131. package/dist/commands/lsb-release.d.ts +0 -1
  132. package/dist/commands/lsb-release.js +0 -1
  133. package/dist/commands/man.d.ts +0 -1
  134. package/dist/commands/man.js +0 -1
  135. package/dist/commands/manuals-bundle.d.ts +0 -1
  136. package/dist/commands/manuals-bundle.js +0 -1
  137. package/dist/commands/mkdir.d.ts +0 -1
  138. package/dist/commands/mkdir.js +0 -1
  139. package/dist/commands/mv.d.ts +0 -1
  140. package/dist/commands/mv.js +0 -1
  141. package/dist/commands/nano.d.ts +0 -1
  142. package/dist/commands/nano.js +0 -1
  143. package/dist/commands/neofetch.d.ts +0 -1
  144. package/dist/commands/neofetch.js +0 -1
  145. package/dist/commands/node.d.ts +0 -1
  146. package/dist/commands/node.js +0 -1
  147. package/dist/commands/npm.d.ts +0 -1
  148. package/dist/commands/npm.js +0 -1
  149. package/dist/commands/passwd.d.ts +0 -1
  150. package/dist/commands/passwd.js +0 -1
  151. package/dist/commands/ping.d.ts +0 -1
  152. package/dist/commands/ping.js +0 -1
  153. package/dist/commands/printf.d.ts +0 -1
  154. package/dist/commands/printf.js +0 -1
  155. package/dist/commands/ps.d.ts +0 -1
  156. package/dist/commands/ps.js +0 -1
  157. package/dist/commands/pwd.d.ts +0 -1
  158. package/dist/commands/pwd.js +0 -1
  159. package/dist/commands/python.d.ts +0 -1
  160. package/dist/commands/python.js +0 -1
  161. package/dist/commands/read.d.ts +0 -1
  162. package/dist/commands/read.js +0 -1
  163. package/dist/commands/registry.d.ts +0 -1
  164. package/dist/commands/registry.js +0 -1
  165. package/dist/commands/rm.d.ts +0 -1
  166. package/dist/commands/rm.js +0 -1
  167. package/dist/commands/runtime.d.ts +0 -1
  168. package/dist/commands/runtime.js +139 -107
  169. package/dist/commands/sed.d.ts +0 -1
  170. package/dist/commands/sed.js +0 -1
  171. package/dist/commands/seq.d.ts +0 -1
  172. package/dist/commands/seq.js +0 -1
  173. package/dist/commands/set.d.ts +0 -1
  174. package/dist/commands/set.js +0 -1
  175. package/dist/commands/sh.d.ts +0 -1
  176. package/dist/commands/sh.js +0 -1
  177. package/dist/commands/shift.d.ts +0 -1
  178. package/dist/commands/shift.js +0 -1
  179. package/dist/commands/sleep.d.ts +0 -1
  180. package/dist/commands/sleep.js +0 -1
  181. package/dist/commands/sort.d.ts +0 -1
  182. package/dist/commands/sort.js +0 -1
  183. package/dist/commands/source.d.ts +0 -1
  184. package/dist/commands/source.js +0 -1
  185. package/dist/commands/stat.d.ts +0 -1
  186. package/dist/commands/stat.js +0 -1
  187. package/dist/commands/su.d.ts +0 -1
  188. package/dist/commands/su.js +0 -1
  189. package/dist/commands/sudo.d.ts +0 -1
  190. package/dist/commands/sudo.js +0 -1
  191. package/dist/commands/tail.d.ts +0 -1
  192. package/dist/commands/tail.js +0 -1
  193. package/dist/commands/tar.d.ts +0 -1
  194. package/dist/commands/tar.js +0 -1
  195. package/dist/commands/tee.d.ts +0 -1
  196. package/dist/commands/tee.js +0 -1
  197. package/dist/commands/test.d.ts +0 -1
  198. package/dist/commands/test.js +0 -1
  199. package/dist/commands/touch.d.ts +0 -1
  200. package/dist/commands/touch.js +0 -1
  201. package/dist/commands/tr.d.ts +0 -1
  202. package/dist/commands/tr.js +0 -1
  203. package/dist/commands/tree.d.ts +0 -1
  204. package/dist/commands/tree.js +0 -1
  205. package/dist/commands/true.d.ts +0 -1
  206. package/dist/commands/true.js +0 -1
  207. package/dist/commands/type.d.ts +0 -1
  208. package/dist/commands/type.js +0 -1
  209. package/dist/commands/uname.d.ts +0 -1
  210. package/dist/commands/uname.js +0 -1
  211. package/dist/commands/uniq.d.ts +0 -1
  212. package/dist/commands/uniq.js +0 -1
  213. package/dist/commands/unset.d.ts +0 -1
  214. package/dist/commands/unset.js +0 -1
  215. package/dist/commands/uptime.d.ts +0 -1
  216. package/dist/commands/uptime.js +0 -1
  217. package/dist/commands/wc.d.ts +0 -1
  218. package/dist/commands/wc.js +0 -1
  219. package/dist/commands/wget.d.ts +0 -1
  220. package/dist/commands/wget.js +0 -1
  221. package/dist/commands/which.d.ts +0 -1
  222. package/dist/commands/which.js +0 -1
  223. package/dist/commands/who.d.ts +0 -1
  224. package/dist/commands/who.js +0 -1
  225. package/dist/commands/whoami.d.ts +0 -1
  226. package/dist/commands/whoami.js +0 -1
  227. package/dist/commands/xargs.d.ts +0 -1
  228. package/dist/commands/xargs.js +0 -1
  229. package/dist/index.d.ts +0 -1
  230. package/dist/index.js +0 -1
  231. package/dist/modules/linuxRootfs.d.ts +0 -1
  232. package/dist/modules/linuxRootfs.js +0 -1
  233. package/dist/modules/neofetch.d.ts +0 -1
  234. package/dist/modules/neofetch.js +0 -1
  235. package/dist/modules/shellInteractive.d.ts +0 -1
  236. package/dist/modules/shellInteractive.js +0 -1
  237. package/dist/modules/shellRuntime.d.ts +0 -1
  238. package/dist/modules/shellRuntime.js +0 -1
  239. package/dist/self-standalone.d.ts +0 -1
  240. package/dist/self-standalone.js +0 -1
  241. package/dist/standalone-wo-sftp.d.ts +0 -1
  242. package/dist/standalone-wo-sftp.js +0 -1
  243. package/dist/standalone.d.ts +0 -1
  244. package/dist/standalone.js +0 -1
  245. package/dist/types/commands.d.ts +0 -1
  246. package/dist/types/commands.js +0 -1
  247. package/dist/types/pipeline.d.ts +0 -1
  248. package/dist/types/pipeline.js +0 -1
  249. package/dist/types/streams.d.ts +0 -1
  250. package/dist/types/streams.js +0 -1
  251. package/dist/types/vfs.d.ts +0 -1
  252. package/dist/types/vfs.js +0 -1
  253. package/dist/utils/expand.d.ts +0 -1
  254. package/dist/utils/expand.js +0 -1
  255. package/dist/utils/perfLogger.d.ts +0 -1
  256. package/dist/utils/perfLogger.js +0 -1
  257. package/dist/utils/tokenize.d.ts +0 -1
  258. package/dist/utils/tokenize.js +0 -1
  259. package/dist/utils/vfsDiff.d.ts +0 -1
  260. package/dist/utils/vfsDiff.js +0 -1
  261. package/docs/app.js +1751 -0
  262. package/docs/classes/HoneyPot.html +17 -17
  263. package/docs/classes/IdleManager.html +8 -8
  264. package/docs/classes/SshClient.html +34 -34
  265. package/docs/classes/VirtualFileSystem.html +38 -38
  266. package/docs/classes/VirtualPackageManager.html +19 -19
  267. package/docs/classes/VirtualSftpServer.html +3 -3
  268. package/docs/classes/VirtualShell.html +41 -40
  269. package/docs/classes/VirtualSshServer.html +8 -8
  270. package/docs/classes/VirtualUserManager.html +32 -32
  271. package/docs/demo.html +82 -0
  272. package/docs/functions/assertDiff.html +3 -3
  273. package/docs/functions/diffSnapshots.html +5 -5
  274. package/docs/functions/formatDiff.html +3 -3
  275. package/docs/functions/getArg.html +3 -3
  276. package/docs/functions/getFlag.html +2 -2
  277. package/docs/functions/ifFlag.html +2 -2
  278. package/docs/hierarchy.html +1 -1
  279. package/docs/index.html +41 -19
  280. package/docs/interfaces/AuditLogEntry.html +3 -3
  281. package/docs/interfaces/CommandContext.html +13 -13
  282. package/docs/interfaces/CommandResult.html +13 -13
  283. package/docs/interfaces/ExecStream.html +6 -6
  284. package/docs/interfaces/HoneyPotStats.html +3 -3
  285. package/docs/interfaces/IdleManagerOptions.html +3 -3
  286. package/docs/interfaces/InstalledPackage.html +11 -11
  287. package/docs/interfaces/NanoEditorSession.html +5 -5
  288. package/docs/interfaces/PackageDefinition.html +14 -14
  289. package/docs/interfaces/PackageFile.html +5 -5
  290. package/docs/interfaces/PasswordChallenge.html +9 -9
  291. package/docs/interfaces/RemoveOptions.html +3 -3
  292. package/docs/interfaces/ShellEnv.html +4 -4
  293. package/docs/interfaces/ShellModule.html +8 -8
  294. package/docs/interfaces/ShellProperties.html +5 -5
  295. package/docs/interfaces/ShellStream.html +7 -7
  296. package/docs/interfaces/SudoChallenge.html +9 -9
  297. package/docs/interfaces/VfsBaseNode.html +7 -7
  298. package/docs/interfaces/VfsDiff.html +7 -7
  299. package/docs/interfaces/VfsDiffEntry.html +4 -4
  300. package/docs/interfaces/VfsDiffModified.html +6 -6
  301. package/docs/interfaces/VfsDirectoryNode.html +8 -8
  302. package/docs/interfaces/VfsFileNode.html +9 -9
  303. package/docs/interfaces/VfsOptions.html +6 -6
  304. package/docs/interfaces/VfsSnapshot.html +3 -3
  305. package/docs/interfaces/VfsSnapshotBaseNode.html +4 -4
  306. package/docs/interfaces/VfsSnapshotDirectoryNode.html +5 -5
  307. package/docs/interfaces/VfsSnapshotFileNode.html +6 -6
  308. package/docs/interfaces/VirtualActiveSession.html +7 -7
  309. package/docs/interfaces/VirtualSftpServerOptions.html +3 -3
  310. package/docs/interfaces/VirtualShellVfsLike.html +4 -4
  311. package/docs/interfaces/VirtualShellVfsOptions.html +3 -3
  312. package/docs/interfaces/WriteFileOptions.html +4 -4
  313. package/docs/modules.html +1 -1
  314. package/docs/types/ArgParseOptions.html +3 -3
  315. package/docs/types/CommandMode.html +2 -2
  316. package/docs/types/CommandOutcome.html +2 -2
  317. package/docs/types/IdleState.html +1 -1
  318. package/docs/types/VfsNodeStats.html +2 -2
  319. package/docs/types/VfsNodeType.html +2 -2
  320. package/docs/types/VfsPersistenceMode.html +2 -2
  321. package/docs/types/VfsSnapshotNode.html +2 -2
  322. package/examples/app.js +1751 -28
  323. package/examples/app.ts +299 -0
  324. package/examples/build.js +27 -0
  325. package/examples/demo.html +33 -0
  326. package/examples/index.html +68 -13
  327. package/package.json +3 -2
  328. package/polyfills/buffer.js +117 -0
  329. package/polyfills/node_crypto/index.js +167 -7
  330. package/polyfills/node_fs/index.js +202 -8
  331. package/polyfills/node_path/index.js +23 -9
  332. package/polyfills/process.js +14 -0
  333. package/polyfills/ssh2/index.js +75 -0
  334. package/scripts/build-all.mjs +77 -49
  335. package/scripts/build-names.mjs +2 -3
  336. package/src/VirtualPackageManager/index.ts +4 -15
  337. package/src/VirtualShell/index.ts +5 -2
  338. package/src/commands/runtime.ts +44 -1
  339. package/tsconfig.json +6 -3
  340. package/typedoc.json +4 -2
  341. package/builds/fortune-nyx-v1.5.1-web-full.min.js +0 -12
  342. package/builds/fortune-nyx-v1.5.1-web.min.js +0 -12
  343. package/dist/Honeypot/index.d.ts.map +0 -1
  344. package/dist/Honeypot/index.js.map +0 -1
  345. package/dist/SSHClient/index.d.ts.map +0 -1
  346. package/dist/SSHClient/index.js.map +0 -1
  347. package/dist/SSHMimic/exec.d.ts.map +0 -1
  348. package/dist/SSHMimic/exec.js.map +0 -1
  349. package/dist/SSHMimic/executor.d.ts.map +0 -1
  350. package/dist/SSHMimic/executor.js.map +0 -1
  351. package/dist/SSHMimic/hostKey.d.ts.map +0 -1
  352. package/dist/SSHMimic/hostKey.js.map +0 -1
  353. package/dist/SSHMimic/index.d.ts.map +0 -1
  354. package/dist/SSHMimic/index.js.map +0 -1
  355. package/dist/SSHMimic/loginBanner.d.ts.map +0 -1
  356. package/dist/SSHMimic/loginBanner.js.map +0 -1
  357. package/dist/SSHMimic/loginFormat.d.ts.map +0 -1
  358. package/dist/SSHMimic/loginFormat.js.map +0 -1
  359. package/dist/SSHMimic/prompt.d.ts.map +0 -1
  360. package/dist/SSHMimic/prompt.js.map +0 -1
  361. package/dist/SSHMimic/sftp.d.ts.map +0 -1
  362. package/dist/SSHMimic/sftp.js.map +0 -1
  363. package/dist/VirtualFileSystem/binaryPack.d.ts.map +0 -1
  364. package/dist/VirtualFileSystem/binaryPack.js.map +0 -1
  365. package/dist/VirtualFileSystem/index.d.ts.map +0 -1
  366. package/dist/VirtualFileSystem/index.js.map +0 -1
  367. package/dist/VirtualFileSystem/internalTypes.d.ts.map +0 -1
  368. package/dist/VirtualFileSystem/internalTypes.js.map +0 -1
  369. package/dist/VirtualFileSystem/journal.d.ts.map +0 -1
  370. package/dist/VirtualFileSystem/journal.js.map +0 -1
  371. package/dist/VirtualFileSystem/path.d.ts.map +0 -1
  372. package/dist/VirtualFileSystem/path.js.map +0 -1
  373. package/dist/VirtualPackageManager/index.d.ts.map +0 -1
  374. package/dist/VirtualPackageManager/index.js.map +0 -1
  375. package/dist/VirtualShell/idleManager.d.ts.map +0 -1
  376. package/dist/VirtualShell/idleManager.js.map +0 -1
  377. package/dist/VirtualShell/index.d.ts.map +0 -1
  378. package/dist/VirtualShell/index.js.map +0 -1
  379. package/dist/VirtualShell/shell.d.ts.map +0 -1
  380. package/dist/VirtualShell/shell.js.map +0 -1
  381. package/dist/VirtualShell/shellParser.d.ts.map +0 -1
  382. package/dist/VirtualShell/shellParser.js.map +0 -1
  383. package/dist/VirtualUserManager/index.d.ts.map +0 -1
  384. package/dist/VirtualUserManager/index.js.map +0 -1
  385. package/dist/commands/adduser.d.ts.map +0 -1
  386. package/dist/commands/adduser.js.map +0 -1
  387. package/dist/commands/alias.d.ts.map +0 -1
  388. package/dist/commands/alias.js.map +0 -1
  389. package/dist/commands/apt.d.ts.map +0 -1
  390. package/dist/commands/apt.js.map +0 -1
  391. package/dist/commands/awk.d.ts.map +0 -1
  392. package/dist/commands/awk.js.map +0 -1
  393. package/dist/commands/base64.d.ts.map +0 -1
  394. package/dist/commands/base64.js.map +0 -1
  395. package/dist/commands/cat.d.ts.map +0 -1
  396. package/dist/commands/cat.js.map +0 -1
  397. package/dist/commands/cd.d.ts.map +0 -1
  398. package/dist/commands/cd.js.map +0 -1
  399. package/dist/commands/chmod.d.ts.map +0 -1
  400. package/dist/commands/chmod.js.map +0 -1
  401. package/dist/commands/clear.d.ts.map +0 -1
  402. package/dist/commands/clear.js.map +0 -1
  403. package/dist/commands/command-helpers.d.ts.map +0 -1
  404. package/dist/commands/command-helpers.js.map +0 -1
  405. package/dist/commands/cp.d.ts.map +0 -1
  406. package/dist/commands/cp.js.map +0 -1
  407. package/dist/commands/curl.d.ts.map +0 -1
  408. package/dist/commands/curl.js.map +0 -1
  409. package/dist/commands/cut.d.ts.map +0 -1
  410. package/dist/commands/cut.js.map +0 -1
  411. package/dist/commands/date.d.ts.map +0 -1
  412. package/dist/commands/date.js.map +0 -1
  413. package/dist/commands/declare.d.ts.map +0 -1
  414. package/dist/commands/declare.js.map +0 -1
  415. package/dist/commands/deluser.d.ts.map +0 -1
  416. package/dist/commands/deluser.js.map +0 -1
  417. package/dist/commands/df.d.ts.map +0 -1
  418. package/dist/commands/df.js.map +0 -1
  419. package/dist/commands/diff.d.ts.map +0 -1
  420. package/dist/commands/diff.js.map +0 -1
  421. package/dist/commands/dpkg.d.ts.map +0 -1
  422. package/dist/commands/dpkg.js.map +0 -1
  423. package/dist/commands/du.d.ts.map +0 -1
  424. package/dist/commands/du.js.map +0 -1
  425. package/dist/commands/echo.d.ts.map +0 -1
  426. package/dist/commands/echo.js.map +0 -1
  427. package/dist/commands/env.d.ts.map +0 -1
  428. package/dist/commands/env.js.map +0 -1
  429. package/dist/commands/exit.d.ts.map +0 -1
  430. package/dist/commands/exit.js.map +0 -1
  431. package/dist/commands/export.d.ts.map +0 -1
  432. package/dist/commands/export.js.map +0 -1
  433. package/dist/commands/find.d.ts.map +0 -1
  434. package/dist/commands/find.js.map +0 -1
  435. package/dist/commands/free.d.ts.map +0 -1
  436. package/dist/commands/free.js.map +0 -1
  437. package/dist/commands/grep.d.ts.map +0 -1
  438. package/dist/commands/grep.js.map +0 -1
  439. package/dist/commands/groups.d.ts.map +0 -1
  440. package/dist/commands/groups.js.map +0 -1
  441. package/dist/commands/gzip.d.ts.map +0 -1
  442. package/dist/commands/gzip.js.map +0 -1
  443. package/dist/commands/head.d.ts.map +0 -1
  444. package/dist/commands/head.js.map +0 -1
  445. package/dist/commands/help.d.ts.map +0 -1
  446. package/dist/commands/help.js.map +0 -1
  447. package/dist/commands/helpers.d.ts.map +0 -1
  448. package/dist/commands/helpers.js.map +0 -1
  449. package/dist/commands/history.d.ts.map +0 -1
  450. package/dist/commands/history.js.map +0 -1
  451. package/dist/commands/hostname.d.ts.map +0 -1
  452. package/dist/commands/hostname.js.map +0 -1
  453. package/dist/commands/htop.d.ts.map +0 -1
  454. package/dist/commands/htop.js.map +0 -1
  455. package/dist/commands/id.d.ts.map +0 -1
  456. package/dist/commands/id.js.map +0 -1
  457. package/dist/commands/index.d.ts.map +0 -1
  458. package/dist/commands/index.js.map +0 -1
  459. package/dist/commands/kill.d.ts.map +0 -1
  460. package/dist/commands/kill.js.map +0 -1
  461. package/dist/commands/ln.d.ts.map +0 -1
  462. package/dist/commands/ln.js.map +0 -1
  463. package/dist/commands/ls.d.ts.map +0 -1
  464. package/dist/commands/ls.js.map +0 -1
  465. package/dist/commands/lsb-release.d.ts.map +0 -1
  466. package/dist/commands/lsb-release.js.map +0 -1
  467. package/dist/commands/man.d.ts.map +0 -1
  468. package/dist/commands/man.js.map +0 -1
  469. package/dist/commands/manuals-bundle.d.ts.map +0 -1
  470. package/dist/commands/manuals-bundle.js.map +0 -1
  471. package/dist/commands/mkdir.d.ts.map +0 -1
  472. package/dist/commands/mkdir.js.map +0 -1
  473. package/dist/commands/mv.d.ts.map +0 -1
  474. package/dist/commands/mv.js.map +0 -1
  475. package/dist/commands/nano.d.ts.map +0 -1
  476. package/dist/commands/nano.js.map +0 -1
  477. package/dist/commands/neofetch.d.ts.map +0 -1
  478. package/dist/commands/neofetch.js.map +0 -1
  479. package/dist/commands/node.d.ts.map +0 -1
  480. package/dist/commands/node.js.map +0 -1
  481. package/dist/commands/npm.d.ts.map +0 -1
  482. package/dist/commands/npm.js.map +0 -1
  483. package/dist/commands/passwd.d.ts.map +0 -1
  484. package/dist/commands/passwd.js.map +0 -1
  485. package/dist/commands/ping.d.ts.map +0 -1
  486. package/dist/commands/ping.js.map +0 -1
  487. package/dist/commands/printf.d.ts.map +0 -1
  488. package/dist/commands/printf.js.map +0 -1
  489. package/dist/commands/ps.d.ts.map +0 -1
  490. package/dist/commands/ps.js.map +0 -1
  491. package/dist/commands/pwd.d.ts.map +0 -1
  492. package/dist/commands/pwd.js.map +0 -1
  493. package/dist/commands/python.d.ts.map +0 -1
  494. package/dist/commands/python.js.map +0 -1
  495. package/dist/commands/read.d.ts.map +0 -1
  496. package/dist/commands/read.js.map +0 -1
  497. package/dist/commands/registry.d.ts.map +0 -1
  498. package/dist/commands/registry.js.map +0 -1
  499. package/dist/commands/rm.d.ts.map +0 -1
  500. package/dist/commands/rm.js.map +0 -1
  501. package/dist/commands/runtime.d.ts.map +0 -1
  502. package/dist/commands/runtime.js.map +0 -1
  503. package/dist/commands/sed.d.ts.map +0 -1
  504. package/dist/commands/sed.js.map +0 -1
  505. package/dist/commands/seq.d.ts.map +0 -1
  506. package/dist/commands/seq.js.map +0 -1
  507. package/dist/commands/set.d.ts.map +0 -1
  508. package/dist/commands/set.js.map +0 -1
  509. package/dist/commands/sh.d.ts.map +0 -1
  510. package/dist/commands/sh.js.map +0 -1
  511. package/dist/commands/shift.d.ts.map +0 -1
  512. package/dist/commands/shift.js.map +0 -1
  513. package/dist/commands/sleep.d.ts.map +0 -1
  514. package/dist/commands/sleep.js.map +0 -1
  515. package/dist/commands/sort.d.ts.map +0 -1
  516. package/dist/commands/sort.js.map +0 -1
  517. package/dist/commands/source.d.ts.map +0 -1
  518. package/dist/commands/source.js.map +0 -1
  519. package/dist/commands/stat.d.ts.map +0 -1
  520. package/dist/commands/stat.js.map +0 -1
  521. package/dist/commands/su.d.ts.map +0 -1
  522. package/dist/commands/su.js.map +0 -1
  523. package/dist/commands/sudo.d.ts.map +0 -1
  524. package/dist/commands/sudo.js.map +0 -1
  525. package/dist/commands/tail.d.ts.map +0 -1
  526. package/dist/commands/tail.js.map +0 -1
  527. package/dist/commands/tar.d.ts.map +0 -1
  528. package/dist/commands/tar.js.map +0 -1
  529. package/dist/commands/tee.d.ts.map +0 -1
  530. package/dist/commands/tee.js.map +0 -1
  531. package/dist/commands/test.d.ts.map +0 -1
  532. package/dist/commands/test.js.map +0 -1
  533. package/dist/commands/touch.d.ts.map +0 -1
  534. package/dist/commands/touch.js.map +0 -1
  535. package/dist/commands/tr.d.ts.map +0 -1
  536. package/dist/commands/tr.js.map +0 -1
  537. package/dist/commands/tree.d.ts.map +0 -1
  538. package/dist/commands/tree.js.map +0 -1
  539. package/dist/commands/true.d.ts.map +0 -1
  540. package/dist/commands/true.js.map +0 -1
  541. package/dist/commands/type.d.ts.map +0 -1
  542. package/dist/commands/type.js.map +0 -1
  543. package/dist/commands/uname.d.ts.map +0 -1
  544. package/dist/commands/uname.js.map +0 -1
  545. package/dist/commands/uniq.d.ts.map +0 -1
  546. package/dist/commands/uniq.js.map +0 -1
  547. package/dist/commands/unset.d.ts.map +0 -1
  548. package/dist/commands/unset.js.map +0 -1
  549. package/dist/commands/uptime.d.ts.map +0 -1
  550. package/dist/commands/uptime.js.map +0 -1
  551. package/dist/commands/wc.d.ts.map +0 -1
  552. package/dist/commands/wc.js.map +0 -1
  553. package/dist/commands/wget.d.ts.map +0 -1
  554. package/dist/commands/wget.js.map +0 -1
  555. package/dist/commands/which.d.ts.map +0 -1
  556. package/dist/commands/which.js.map +0 -1
  557. package/dist/commands/who.d.ts.map +0 -1
  558. package/dist/commands/who.js.map +0 -1
  559. package/dist/commands/whoami.d.ts.map +0 -1
  560. package/dist/commands/whoami.js.map +0 -1
  561. package/dist/commands/xargs.d.ts.map +0 -1
  562. package/dist/commands/xargs.js.map +0 -1
  563. package/dist/index.d.ts.map +0 -1
  564. package/dist/index.js.map +0 -1
  565. package/dist/modules/linuxRootfs.d.ts.map +0 -1
  566. package/dist/modules/linuxRootfs.js.map +0 -1
  567. package/dist/modules/neofetch.d.ts.map +0 -1
  568. package/dist/modules/neofetch.js.map +0 -1
  569. package/dist/modules/shellInteractive.d.ts.map +0 -1
  570. package/dist/modules/shellInteractive.js.map +0 -1
  571. package/dist/modules/shellRuntime.d.ts.map +0 -1
  572. package/dist/modules/shellRuntime.js.map +0 -1
  573. package/dist/self-standalone.d.ts.map +0 -1
  574. package/dist/self-standalone.js.map +0 -1
  575. package/dist/standalone-wo-sftp.d.ts.map +0 -1
  576. package/dist/standalone-wo-sftp.js.map +0 -1
  577. package/dist/standalone.d.ts.map +0 -1
  578. package/dist/standalone.js.map +0 -1
  579. package/dist/types/commands.d.ts.map +0 -1
  580. package/dist/types/commands.js.map +0 -1
  581. package/dist/types/pipeline.d.ts.map +0 -1
  582. package/dist/types/pipeline.js.map +0 -1
  583. package/dist/types/streams.d.ts.map +0 -1
  584. package/dist/types/streams.js.map +0 -1
  585. package/dist/types/vfs.d.ts.map +0 -1
  586. package/dist/types/vfs.js.map +0 -1
  587. package/dist/utils/expand.d.ts.map +0 -1
  588. package/dist/utils/expand.js.map +0 -1
  589. package/dist/utils/perfLogger.d.ts.map +0 -1
  590. package/dist/utils/perfLogger.js.map +0 -1
  591. package/dist/utils/tokenize.d.ts.map +0 -1
  592. package/dist/utils/tokenize.js.map +0 -1
  593. package/dist/utils/vfsDiff.d.ts.map +0 -1
  594. package/dist/utils/vfsDiff.js.map +0 -1
  595. package/dist/web-api.d.ts +0 -26
  596. package/dist/web-api.d.ts.map +0 -1
  597. package/dist/web-api.js +0 -47
  598. package/dist/web-api.js.map +0 -1
  599. package/dist/web-full.d.ts +0 -4
  600. package/dist/web-full.d.ts.map +0 -1
  601. package/dist/web-full.js +0 -9
  602. package/dist/web-full.js.map +0 -1
  603. package/dist/web.d.ts +0 -108
  604. package/dist/web.d.ts.map +0 -1
  605. package/dist/web.js +0 -774
  606. package/dist/web.js.map +0 -1
  607. package/examples/app-iife.js +0 -58
  608. package/examples/index-cf.html +0 -27
  609. package/examples/web-iife.min.js +0 -13
  610. package/examples/web.min.js +0 -12
  611. package/src/web-api.ts +0 -62
  612. package/src/web-full.ts +0 -11
  613. package/src/web.ts +0 -930
  614. package/tests/web.test.ts +0 -182
@@ -61,7 +61,25 @@ function resolveVfsBinary(name, env, shell, authUser) {
61
61
  }
62
62
  return null;
63
63
  }
64
+ const MAX_CALL_DEPTH = 8;
65
+ let _callDepth = 0;
64
66
  export async function runCommandDirect(name, args, authUser, hostname, mode, cwd, shell, stdin, env) {
67
+ // Anti-loop guard: track call depth via env to avoid infinite recursion
68
+ _callDepth++;
69
+ // console.debug(`[depth=${_callDepth}] runCommandDirect: ${name}`);
70
+ if (_callDepth > MAX_CALL_DEPTH) {
71
+ _callDepth--;
72
+ // console.debug(`[LOOP DETECTED] runCommandDirect blocked: ${name}`);
73
+ return { stderr: `${name}: maximum call depth (${MAX_CALL_DEPTH}) exceeded`, exitCode: 126 };
74
+ }
75
+ try {
76
+ return await _runCommandDirectInner(name, args, authUser, hostname, mode, cwd, shell, stdin, env);
77
+ }
78
+ finally {
79
+ _callDepth--;
80
+ }
81
+ }
82
+ async function _runCommandDirectInner(name, args, authUser, hostname, mode, cwd, shell, stdin, env) {
65
83
  const assignRe = /^([A-Za-z_][A-Za-z0-9_]*)=(.*)$/;
66
84
  const invocation = [name, ...args];
67
85
  let assignCount = 0;
@@ -118,6 +136,8 @@ export async function runCommandDirect(name, args, authUser, hostname, mode, cwd
118
136
  env,
119
137
  });
120
138
  }
139
+ // builtin not found — stop here, don't fall through to sh -c (avoids infinite loop)
140
+ return { stderr: `${name}: exec builtin '${builtinMatch[1]}' not found`, exitCode: 127 };
121
141
  }
122
142
  const shMod = resolveModule("sh");
123
143
  if (shMod) {
@@ -163,84 +183,109 @@ export async function runCommand(rawInput, authUser, hostname, mode, cwd, shell,
163
183
  if (trimmed.length === 0)
164
184
  return { exitCode: 0 };
165
185
  const shellEnv = env ?? makeDefaultEnv(authUser, hostname);
166
- const rawTokens = tokenizeCommand(trimmed);
167
- const rawFirstWord = rawTokens[0]?.toLowerCase() ?? "";
168
- const aliasVal = shellEnv.vars[`__alias_${rawFirstWord}`];
169
- const aliasExpanded = aliasVal
170
- ? trimmed.replace(rawFirstWord, aliasVal)
171
- : trimmed;
172
- // Detect sh-syntax constructs that must be handled by the sh interpreter
173
- const isShScript = /\bfor\s+\w+\s+in\b/.test(aliasExpanded) ||
174
- /\bwhile\s+/.test(aliasExpanded) ||
175
- /\bif\s+/.test(aliasExpanded) ||
176
- /\w+\s*\(\s*\)\s*\{/.test(aliasExpanded) ||
177
- /\bfunction\s+\w+/.test(aliasExpanded) ||
178
- /\(\(\s*.+\s*\)\)/.test(aliasExpanded);
179
- const hasOperators = /(?<![|&])[|](?![|])/.test(aliasExpanded) ||
180
- aliasExpanded.includes(">") ||
181
- aliasExpanded.includes("<") ||
182
- aliasExpanded.includes("&&") ||
183
- aliasExpanded.includes("||") ||
184
- aliasExpanded.includes(";");
185
- if ((isShScript && rawFirstWord !== "sh" && rawFirstWord !== "bash") || hasOperators) {
186
- // sh-syntax: route through sh interpreter to handle for/while/functions
187
- if (isShScript && rawFirstWord !== "sh" && rawFirstWord !== "bash") {
188
- const shMod = resolveModule("sh");
189
- if (shMod) {
190
- return await shMod.run({
191
- authUser, hostname,
192
- activeSessions: shell.users.listActiveSessions(),
193
- rawInput: aliasExpanded,
194
- mode,
195
- args: ["-c", aliasExpanded],
196
- stdin: undefined,
197
- cwd,
198
- shell,
199
- env: shellEnv,
200
- });
186
+ // Anti-loop guard: check depth here too — catches sh -c recursive calls
187
+ _callDepth++;
188
+ // console.debug(`[depth=${_callDepth}] runCommand: ${trimmed.slice(0, 60)}`);
189
+ if (_callDepth > MAX_CALL_DEPTH) {
190
+ _callDepth--;
191
+ // console.debug(`[LOOP DETECTED] runCommand blocked: ${trimmed.slice(0, 60)}`);
192
+ return { stderr: `${trimmed.split(" ")[0]}: maximum call depth (${MAX_CALL_DEPTH}) exceeded`, exitCode: 126 };
193
+ }
194
+ try {
195
+ const rawTokens = tokenizeCommand(trimmed);
196
+ const rawFirstWord = rawTokens[0]?.toLowerCase() ?? "";
197
+ const aliasVal = shellEnv.vars[`__alias_${rawFirstWord}`];
198
+ const aliasExpanded = aliasVal
199
+ ? trimmed.replace(rawFirstWord, aliasVal)
200
+ : trimmed;
201
+ // Detect sh-syntax constructs that must be handled by the sh interpreter
202
+ const isShScript = /\bfor\s+\w+\s+in\b/.test(aliasExpanded) ||
203
+ /\bwhile\s+/.test(aliasExpanded) ||
204
+ /\bif\s+/.test(aliasExpanded) ||
205
+ /\w+\s*\(\s*\)\s*\{/.test(aliasExpanded) ||
206
+ /\bfunction\s+\w+/.test(aliasExpanded) ||
207
+ /\(\(\s*.+\s*\)\)/.test(aliasExpanded);
208
+ const hasOperators = /(?<![|&])[|](?![|])/.test(aliasExpanded) ||
209
+ aliasExpanded.includes(">") ||
210
+ aliasExpanded.includes("<") ||
211
+ aliasExpanded.includes("&&") ||
212
+ aliasExpanded.includes("||") ||
213
+ aliasExpanded.includes(";");
214
+ if ((isShScript && rawFirstWord !== "sh" && rawFirstWord !== "bash") || hasOperators) {
215
+ // sh-syntax: route through sh interpreter to handle for/while/functions
216
+ if (isShScript && rawFirstWord !== "sh" && rawFirstWord !== "bash") {
217
+ const shMod = resolveModule("sh");
218
+ if (shMod) {
219
+ return await shMod.run({
220
+ authUser, hostname,
221
+ activeSessions: shell.users.listActiveSessions(),
222
+ rawInput: aliasExpanded,
223
+ mode,
224
+ args: ["-c", aliasExpanded],
225
+ stdin: undefined,
226
+ cwd,
227
+ shell,
228
+ env: shellEnv,
229
+ });
230
+ }
231
+ }
232
+ const script = parseScript(aliasExpanded);
233
+ if (!script.isValid)
234
+ return { stderr: script.error || "Syntax error", exitCode: 1 };
235
+ try {
236
+ return await executeStatements(script.statements, authUser, hostname, mode, cwd, shell, shellEnv);
237
+ }
238
+ catch (error) {
239
+ return {
240
+ stderr: error instanceof Error ? error.message : "Execution failed",
241
+ exitCode: 1,
242
+ };
201
243
  }
202
244
  }
203
- const script = parseScript(aliasExpanded);
204
- if (!script.isValid)
205
- return { stderr: script.error || "Syntax error", exitCode: 1 };
206
- try {
207
- return await executeStatements(script.statements, authUser, hostname, mode, cwd, shell, shellEnv);
208
- }
209
- catch (error) {
210
- return {
211
- stderr: error instanceof Error ? error.message : "Execution failed",
212
- exitCode: 1,
213
- };
245
+ const expanded = await expandAsync(aliasExpanded, shellEnv.vars, shellEnv.lastExitCode, (sub) => runCommand(sub, authUser, hostname, mode, cwd, shell, undefined, shellEnv).then((r) => r.stdout ?? ""));
246
+ const parts = tokenizeCommand(expanded.trim());
247
+ if (parts.length === 0)
248
+ return { exitCode: 0 };
249
+ const assignRe = /^([A-Za-z_][A-Za-z0-9_]*)=(.*)$/;
250
+ if (assignRe.test(parts[0])) {
251
+ return runCommandDirect(parts[0], parts.slice(1), authUser, hostname, mode, cwd, shell, stdin, shellEnv);
214
252
  }
215
- }
216
- const expanded = await expandAsync(aliasExpanded, shellEnv.vars, shellEnv.lastExitCode, (sub) => runCommand(sub, authUser, hostname, mode, cwd, shell, undefined, shellEnv).then((r) => r.stdout ?? ""));
217
- const parts = tokenizeCommand(expanded.trim());
218
- if (parts.length === 0)
219
- return { exitCode: 0 };
220
- const assignRe = /^([A-Za-z_][A-Za-z0-9_]*)=(.*)$/;
221
- if (assignRe.test(parts[0])) {
222
- return runCommandDirect(parts[0], parts.slice(1), authUser, hostname, mode, cwd, shell, stdin, shellEnv);
223
- }
224
- const commandName = parts[0]?.toLowerCase() ?? "";
225
- // Apply brace expansion to each arg token
226
- const args = parts.slice(1).flatMap(expandBraces);
227
- const mod = resolveModule(commandName);
228
- if (!mod) {
229
- const vfsBinary = resolveVfsBinary(commandName, shellEnv, shell, authUser);
230
- if (vfsBinary) {
231
- const stubContent = shell.vfs.readFile(vfsBinary);
232
- const builtinMatch = stubContent.match(/exec\s+builtin\s+(\S+)/);
233
- if (builtinMatch) {
234
- const builtinName = builtinMatch[1];
235
- const builtinMod = resolveModule(builtinName);
236
- if (builtinMod) {
237
- return await builtinMod.run({
253
+ const commandName = parts[0]?.toLowerCase() ?? "";
254
+ // Apply brace expansion to each arg token
255
+ const args = parts.slice(1).flatMap(expandBraces);
256
+ const mod = resolveModule(commandName);
257
+ if (!mod) {
258
+ const vfsBinary = resolveVfsBinary(commandName, shellEnv, shell, authUser);
259
+ if (vfsBinary) {
260
+ const stubContent = shell.vfs.readFile(vfsBinary);
261
+ const builtinMatch = stubContent.match(/exec\s+builtin\s+(\S+)/);
262
+ if (builtinMatch) {
263
+ const builtinName = builtinMatch[1];
264
+ const builtinMod = resolveModule(builtinName);
265
+ if (builtinMod) {
266
+ return await builtinMod.run({
267
+ authUser,
268
+ hostname,
269
+ activeSessions: shell.users.listActiveSessions(),
270
+ rawInput: [commandName, ...args].join(" "),
271
+ mode,
272
+ args,
273
+ stdin,
274
+ cwd,
275
+ shell,
276
+ env: shellEnv,
277
+ });
278
+ }
279
+ }
280
+ const shMod = resolveModule("sh");
281
+ if (shMod) {
282
+ return await shMod.run({
238
283
  authUser,
239
284
  hostname,
240
285
  activeSessions: shell.users.listActiveSessions(),
241
- rawInput: [commandName, ...args].join(" "),
286
+ rawInput: `sh -c ${JSON.stringify(stubContent)}`,
242
287
  mode,
243
- args,
288
+ args: ["-c", stubContent, "--", ...args],
244
289
  stdin,
245
290
  cwd,
246
291
  shell,
@@ -248,43 +293,30 @@ export async function runCommand(rawInput, authUser, hostname, mode, cwd, shell,
248
293
  });
249
294
  }
250
295
  }
251
- const shMod = resolveModule("sh");
252
- if (shMod) {
253
- return await shMod.run({
254
- authUser,
255
- hostname,
256
- activeSessions: shell.users.listActiveSessions(),
257
- rawInput: `sh -c ${JSON.stringify(stubContent)}`,
258
- mode,
259
- args: ["-c", stubContent, "--", ...args],
260
- stdin,
261
- cwd,
262
- shell,
263
- env: shellEnv,
264
- });
265
- }
296
+ return { stderr: `${commandName}: command not found`, exitCode: 127 };
297
+ }
298
+ try {
299
+ return await mod.run({
300
+ authUser,
301
+ hostname,
302
+ activeSessions: shell.users.listActiveSessions(),
303
+ rawInput: expanded,
304
+ mode,
305
+ args,
306
+ stdin,
307
+ cwd,
308
+ shell,
309
+ env: shellEnv,
310
+ });
311
+ }
312
+ catch (error) {
313
+ return {
314
+ stderr: error instanceof Error ? error.message : "Command failed",
315
+ exitCode: 1,
316
+ };
266
317
  }
267
- return { stderr: `${commandName}: command not found`, exitCode: 127 };
268
- }
269
- try {
270
- return await mod.run({
271
- authUser,
272
- hostname,
273
- activeSessions: shell.users.listActiveSessions(),
274
- rawInput: expanded,
275
- mode,
276
- args,
277
- stdin,
278
- cwd,
279
- shell,
280
- env: shellEnv,
281
- });
282
318
  }
283
- catch (error) {
284
- return {
285
- stderr: error instanceof Error ? error.message : "Command failed",
286
- exitCode: 1,
287
- };
319
+ finally {
320
+ _callDepth--;
288
321
  }
289
322
  }
290
- //# sourceMappingURL=runtime.js.map
@@ -5,4 +5,3 @@ import type { ShellModule } from "../types/commands";
5
5
  * @params ["-e <expr> [file]", "s/pattern/replace/[g]"]
6
6
  */
7
7
  export declare const sedCommand: ShellModule;
8
- //# sourceMappingURL=sed.d.ts.map
@@ -58,4 +58,3 @@ export const sedCommand = {
58
58
  return { stdout: result, exitCode: 0 };
59
59
  },
60
60
  };
61
- //# sourceMappingURL=sed.js.map
@@ -1,4 +1,3 @@
1
1
  import type { ShellModule } from "../types/commands";
2
2
  /** Generate sequences of numbers. seq LAST / seq FIRST LAST / seq FIRST INCREMENT LAST */
3
3
  export declare const seqCommand: ShellModule;
4
- //# sourceMappingURL=seq.d.ts.map
@@ -48,4 +48,3 @@ export const seqCommand = {
48
48
  return { stdout: `${results.join(sep)}\n`, exitCode: 0 };
49
49
  },
50
50
  };
51
- //# sourceMappingURL=seq.js.map
@@ -6,4 +6,3 @@ import type { ShellModule } from "../types/commands";
6
6
  * @params ["[VAR=value]"]
7
7
  */
8
8
  export declare const setCommand: ShellModule;
9
- //# sourceMappingURL=set.d.ts.map
@@ -24,4 +24,3 @@ export const setCommand = {
24
24
  return { exitCode: 0 };
25
25
  },
26
26
  };
27
- //# sourceMappingURL=set.js.map
@@ -1,3 +1,2 @@
1
1
  import type { ShellModule } from "../types/commands";
2
2
  export declare const shCommand: ShellModule;
3
- //# sourceMappingURL=sh.d.ts.map
@@ -429,4 +429,3 @@ export const shCommand = {
429
429
  };
430
430
  },
431
431
  };
432
- //# sourceMappingURL=sh.js.map
@@ -12,4 +12,3 @@ export declare const shiftCommand: ShellModule;
12
12
  */
13
13
  export declare const trapCommand: ShellModule;
14
14
  export declare const returnCommand: ShellModule;
15
- //# sourceMappingURL=shift.d.ts.map
@@ -60,4 +60,3 @@ export const returnCommand = {
60
60
  return { exitCode: code };
61
61
  },
62
62
  };
63
- //# sourceMappingURL=shift.js.map
@@ -5,4 +5,3 @@ import type { ShellModule } from "../types/commands";
5
5
  * @params ["<seconds>"]
6
6
  */
7
7
  export declare const sleepCommand: ShellModule;
8
- //# sourceMappingURL=sleep.d.ts.map
@@ -16,4 +16,3 @@ export const sleepCommand = {
16
16
  return { exitCode: 0 };
17
17
  },
18
18
  };
19
- //# sourceMappingURL=sleep.js.map
@@ -5,4 +5,3 @@ import type { ShellModule } from "../types/commands";
5
5
  * @params ["[-r] [-n] [-u] [-k <col>] [file...]"]
6
6
  */
7
7
  export declare const sortCommand: ShellModule;
8
- //# sourceMappingURL=sort.d.ts.map
@@ -42,4 +42,3 @@ export const sortCommand = {
42
42
  return { stdout: out.join("\n"), exitCode: 0 };
43
43
  },
44
44
  };
45
- //# sourceMappingURL=sort.js.map
@@ -5,4 +5,3 @@ import type { ShellModule } from "../types/commands";
5
5
  * @params ["<file> [args...]"]
6
6
  */
7
7
  export declare const sourceCommand: ShellModule;
8
- //# sourceMappingURL=source.d.ts.map
@@ -37,4 +37,3 @@ export const sourceCommand = {
37
37
  return { exitCode: lastExitCode };
38
38
  },
39
39
  };
40
- //# sourceMappingURL=source.js.map
@@ -4,4 +4,3 @@ import type { ShellModule } from "../types/commands";
4
4
  * Outputs: path, size, mode, type, timestamps — similar to `stat` on Linux.
5
5
  */
6
6
  export declare const statCommand: ShellModule;
7
- //# sourceMappingURL=stat.d.ts.map
@@ -54,4 +54,3 @@ export const statCommand = {
54
54
  return { stdout: `${out}\n`, exitCode: 0 };
55
55
  },
56
56
  };
57
- //# sourceMappingURL=stat.js.map
@@ -13,4 +13,3 @@ import type { ShellModule } from "../types/commands";
13
13
  * - Switching to a non-existent user returns an error immediately.
14
14
  */
15
15
  export declare const suCommand: ShellModule;
16
- //# sourceMappingURL=su.d.ts.map
@@ -55,4 +55,3 @@ export const suCommand = {
55
55
  };
56
56
  },
57
57
  };
58
- //# sourceMappingURL=su.js.map
@@ -1,3 +1,2 @@
1
1
  import type { ShellModule } from "../types/commands";
2
2
  export declare const sudoCommand: ShellModule;
3
- //# sourceMappingURL=sudo.d.ts.map
@@ -52,4 +52,3 @@ export const sudoCommand = {
52
52
  };
53
53
  },
54
54
  };
55
- //# sourceMappingURL=sudo.js.map
@@ -5,4 +5,3 @@ import type { ShellModule } from "../types/commands";
5
5
  * @params ["[-n <lines>] [file...]"]
6
6
  */
7
7
  export declare const tailCommand: ShellModule;
8
- //# sourceMappingURL=tail.d.ts.map
@@ -45,4 +45,3 @@ export const tailCommand = {
45
45
  return { stdout: results.join("\n"), exitCode: 0 };
46
46
  },
47
47
  };
48
- //# sourceMappingURL=tail.js.map
@@ -5,4 +5,3 @@ import type { ShellModule } from "../types/commands";
5
5
  * @params ["[-czf|-xzf|-tf] <archive> [files...]"]
6
6
  */
7
7
  export declare const tarCommand: ShellModule;
8
- //# sourceMappingURL=tar.d.ts.map
@@ -100,4 +100,3 @@ export const tarCommand = {
100
100
  return { stderr: "tar: must specify -c, -x, or -t", exitCode: 1 };
101
101
  },
102
102
  };
103
- //# sourceMappingURL=tar.js.map
@@ -5,4 +5,3 @@ import type { ShellModule } from "../types/commands";
5
5
  * @params ["[-a] <file...>"]
6
6
  */
7
7
  export declare const teeCommand: ShellModule;
8
- //# sourceMappingURL=tee.d.ts.map
@@ -34,4 +34,3 @@ export const teeCommand = {
34
34
  return { stdout: input, exitCode: 0 };
35
35
  },
36
36
  };
37
- //# sourceMappingURL=tee.js.map
@@ -1,3 +1,2 @@
1
1
  import type { ShellModule } from "../types/commands";
2
2
  export declare const testCommand: ShellModule;
3
- //# sourceMappingURL=test.d.ts.map
@@ -112,4 +112,3 @@ export const testCommand = {
112
112
  }
113
113
  },
114
114
  };
115
- //# sourceMappingURL=test.js.map
@@ -5,4 +5,3 @@ import type { ShellModule } from "../types/commands";
5
5
  * @params ["<file>"]
6
6
  */
7
7
  export declare const touchCommand: ShellModule;
8
- //# sourceMappingURL=touch.d.ts.map
@@ -23,4 +23,3 @@ export const touchCommand = {
23
23
  return { exitCode: 0 };
24
24
  },
25
25
  };
26
- //# sourceMappingURL=touch.js.map
@@ -1,3 +1,2 @@
1
1
  import type { ShellModule } from "../types/commands";
2
2
  export declare const trCommand: ShellModule;
3
- //# sourceMappingURL=tr.d.ts.map
@@ -59,4 +59,3 @@ export const trCommand = {
59
59
  return { stdout: input, exitCode: 0 };
60
60
  },
61
61
  };
62
- //# sourceMappingURL=tr.js.map
@@ -5,4 +5,3 @@ import type { ShellModule } from "../types/commands";
5
5
  * @params ["[path]"]
6
6
  */
7
7
  export declare const treeCommand: ShellModule;
8
- //# sourceMappingURL=tree.d.ts.map
@@ -16,4 +16,3 @@ export const treeCommand = {
16
16
  return { stdout: shell.vfs.tree(target), exitCode: 0 };
17
17
  },
18
18
  };
19
- //# sourceMappingURL=tree.js.map
@@ -11,4 +11,3 @@ export declare const trueCommand: ShellModule;
11
11
  * @params []
12
12
  */
13
13
  export declare const falseCommand: ShellModule;
14
- //# sourceMappingURL=true.d.ts.map
@@ -22,4 +22,3 @@ export const falseCommand = {
22
22
  params: [],
23
23
  run: () => ({ exitCode: 1 }),
24
24
  };
25
- //# sourceMappingURL=true.js.map
@@ -5,4 +5,3 @@ import type { ShellModule } from "../types/commands";
5
5
  * @params ["<command...>"]
6
6
  */
7
7
  export declare const typeCommand: ShellModule;
8
- //# sourceMappingURL=type.d.ts.map
@@ -37,4 +37,3 @@ export const typeCommand = {
37
37
  return { stdout: lines.join("\n"), exitCode };
38
38
  },
39
39
  };
40
- //# sourceMappingURL=type.js.map
@@ -5,4 +5,3 @@ import type { ShellModule } from "../types/commands";
5
5
  * @params ["[-a] [-s] [-r] [-m]"]
6
6
  */
7
7
  export declare const unameCommand: ShellModule;
8
- //# sourceMappingURL=uname.d.ts.map
@@ -27,4 +27,3 @@ export const unameCommand = {
27
27
  return { stdout: sysname, exitCode: 0 };
28
28
  },
29
29
  };
30
- //# sourceMappingURL=uname.js.map
@@ -5,4 +5,3 @@ import type { ShellModule } from "../types/commands";
5
5
  * @params ["[-c] [-d] [-u] [file]"]
6
6
  */
7
7
  export declare const uniqCommand: ShellModule;
8
- //# sourceMappingURL=uniq.d.ts.map
@@ -36,4 +36,3 @@ export const uniqCommand = {
36
36
  return { stdout: out.join("\n"), exitCode: 0 };
37
37
  },
38
38
  };
39
- //# sourceMappingURL=uniq.js.map
@@ -5,4 +5,3 @@ import type { ShellModule } from "../types/commands";
5
5
  * @params ["<VAR>"]
6
6
  */
7
7
  export declare const unsetCommand: ShellModule;
8
- //# sourceMappingURL=unset.d.ts.map
@@ -14,4 +14,3 @@ export const unsetCommand = {
14
14
  return { exitCode: 0 };
15
15
  },
16
16
  };
17
- //# sourceMappingURL=unset.js.map
@@ -5,4 +5,3 @@ import type { ShellModule } from "../types/commands";
5
5
  * @params ["[-p] [-s]"]
6
6
  */
7
7
  export declare const uptimeCommand: ShellModule;
8
- //# sourceMappingURL=uptime.d.ts.map
@@ -46,4 +46,3 @@ export const uptimeCommand = {
46
46
  };
47
47
  },
48
48
  };
49
- //# sourceMappingURL=uptime.js.map
@@ -5,4 +5,3 @@ import type { ShellModule } from "../types/commands";
5
5
  * @params ["[-l] [-w] [-c] [file...]"]
6
6
  */
7
7
  export declare const wcCommand: ShellModule;
8
- //# sourceMappingURL=wc.d.ts.map
@@ -53,4 +53,3 @@ export const wcCommand = {
53
53
  return { stdout: results.join("\n"), exitCode: 0 };
54
54
  },
55
55
  };
56
- //# sourceMappingURL=wc.js.map
@@ -5,4 +5,3 @@ import type { ShellModule } from "../types/commands";
5
5
  * @params ["[options] <url>"]
6
6
  */
7
7
  export declare const wgetCommand: ShellModule;
8
- //# sourceMappingURL=wget.d.ts.map
@@ -124,4 +124,3 @@ export const wgetCommand = {
124
124
  return { stdout: body, exitCode: 0 };
125
125
  },
126
126
  };
127
- //# sourceMappingURL=wget.js.map
@@ -1,3 +1,2 @@
1
1
  import type { ShellModule } from "../types/commands";
2
2
  export declare const whichCommand: ShellModule;
3
- //# sourceMappingURL=which.d.ts.map
@@ -30,4 +30,3 @@ export const whichCommand = {
30
30
  return { stdout: lines.join("\n"), exitCode: anyMissing ? 1 : 0 };
31
31
  },
32
32
  };
33
- //# sourceMappingURL=which.js.map
@@ -5,4 +5,3 @@ import type { ShellModule } from "../types/commands";
5
5
  * @params []
6
6
  */
7
7
  export declare const whoCommand: ShellModule;
8
- //# sourceMappingURL=who.d.ts.map
@@ -20,4 +20,3 @@ export const whoCommand = {
20
20
  return { stdout: lines.join("\n"), exitCode: 0 };
21
21
  },
22
22
  };
23
- //# sourceMappingURL=who.js.map