typescript-virtual-container 1.4.3 → 1.4.5

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 (382) hide show
  1. package/.vscode/settings.json +2 -1
  2. package/README.md +137 -19
  3. package/benchmark-results.txt +21 -21
  4. package/builds/self-standalone.js +322 -266
  5. package/builds/self-standalone.js.map +4 -4
  6. package/builds/standalone-wo-sftp.js +268 -212
  7. package/builds/standalone-wo-sftp.js.map +4 -4
  8. package/builds/standalone.js +268 -212
  9. package/builds/standalone.js.map +4 -4
  10. package/builds/web-full-api.min.js +5 -5
  11. package/builds/web-full-api.min.js.map +3 -3
  12. package/builds/web.min.js +5 -5
  13. package/builds/web.min.js.map +3 -3
  14. package/bun.lock +101 -6
  15. package/dist/Honeypot/index.js +1 -0
  16. package/dist/Honeypot/index.js.map +1 -0
  17. package/dist/SSHClient/index.js +1 -0
  18. package/dist/SSHClient/index.js.map +1 -0
  19. package/dist/SSHMimic/exec.js +1 -0
  20. package/dist/SSHMimic/exec.js.map +1 -0
  21. package/dist/SSHMimic/executor.js +1 -0
  22. package/dist/SSHMimic/executor.js.map +1 -0
  23. package/dist/SSHMimic/hostKey.js +1 -0
  24. package/dist/SSHMimic/hostKey.js.map +1 -0
  25. package/dist/SSHMimic/index.js +1 -0
  26. package/dist/SSHMimic/index.js.map +1 -0
  27. package/dist/SSHMimic/loginBanner.js +1 -0
  28. package/dist/SSHMimic/loginBanner.js.map +1 -0
  29. package/dist/SSHMimic/loginFormat.js +1 -0
  30. package/dist/SSHMimic/loginFormat.js.map +1 -0
  31. package/dist/SSHMimic/prompt.js +1 -0
  32. package/dist/SSHMimic/prompt.js.map +1 -0
  33. package/dist/SSHMimic/sftp.js +1 -0
  34. package/dist/SSHMimic/sftp.js.map +1 -0
  35. package/dist/VirtualFileSystem/binaryPack.js +1 -0
  36. package/dist/VirtualFileSystem/binaryPack.js.map +1 -0
  37. package/dist/VirtualFileSystem/index.d.ts.map +1 -1
  38. package/dist/VirtualFileSystem/index.js +1 -0
  39. package/dist/VirtualFileSystem/index.js.map +1 -0
  40. package/dist/VirtualFileSystem/internalTypes.js +1 -0
  41. package/dist/VirtualFileSystem/internalTypes.js.map +1 -0
  42. package/dist/VirtualFileSystem/path.js +1 -0
  43. package/dist/VirtualFileSystem/path.js.map +1 -0
  44. package/dist/VirtualPackageManager/index.js +1 -0
  45. package/dist/VirtualPackageManager/index.js.map +1 -0
  46. package/dist/VirtualShell/index.js +1 -0
  47. package/dist/VirtualShell/index.js.map +1 -0
  48. package/dist/VirtualShell/shell.js +1 -0
  49. package/dist/VirtualShell/shell.js.map +1 -0
  50. package/dist/VirtualShell/shellParser.d.ts.map +1 -1
  51. package/dist/VirtualShell/shellParser.js +3 -1
  52. package/dist/VirtualShell/shellParser.js.map +1 -0
  53. package/dist/VirtualUserManager/index.js +1 -0
  54. package/dist/VirtualUserManager/index.js.map +1 -0
  55. package/dist/commands/adduser.js +1 -0
  56. package/dist/commands/adduser.js.map +1 -0
  57. package/dist/commands/alias.js +1 -0
  58. package/dist/commands/alias.js.map +1 -0
  59. package/dist/commands/apt.js +1 -0
  60. package/dist/commands/apt.js.map +1 -0
  61. package/dist/commands/awk.d.ts.map +1 -1
  62. package/dist/commands/awk.js +2 -2
  63. package/dist/commands/awk.js.map +1 -0
  64. package/dist/commands/base64.js +1 -0
  65. package/dist/commands/base64.js.map +1 -0
  66. package/dist/commands/cat.js +1 -0
  67. package/dist/commands/cat.js.map +1 -0
  68. package/dist/commands/cd.js +3 -2
  69. package/dist/commands/cd.js.map +1 -0
  70. package/dist/commands/chmod.js +1 -0
  71. package/dist/commands/chmod.js.map +1 -0
  72. package/dist/commands/clear.js +1 -0
  73. package/dist/commands/clear.js.map +1 -0
  74. package/dist/commands/command-helpers.js +1 -0
  75. package/dist/commands/command-helpers.js.map +1 -0
  76. package/dist/commands/cp.js +1 -0
  77. package/dist/commands/cp.js.map +1 -0
  78. package/dist/commands/curl.js +1 -0
  79. package/dist/commands/curl.js.map +1 -0
  80. package/dist/commands/cut.js +1 -0
  81. package/dist/commands/cut.js.map +1 -0
  82. package/dist/commands/date.js +1 -0
  83. package/dist/commands/date.js.map +1 -0
  84. package/dist/commands/declare.js +1 -0
  85. package/dist/commands/declare.js.map +1 -0
  86. package/dist/commands/deluser.js +1 -0
  87. package/dist/commands/deluser.js.map +1 -0
  88. package/dist/commands/df.js +1 -0
  89. package/dist/commands/df.js.map +1 -0
  90. package/dist/commands/diff.js +1 -0
  91. package/dist/commands/diff.js.map +1 -0
  92. package/dist/commands/dpkg.js +1 -0
  93. package/dist/commands/dpkg.js.map +1 -0
  94. package/dist/commands/du.js +1 -0
  95. package/dist/commands/du.js.map +1 -0
  96. package/dist/commands/echo.js +1 -0
  97. package/dist/commands/echo.js.map +1 -0
  98. package/dist/commands/env.js +1 -0
  99. package/dist/commands/env.js.map +1 -0
  100. package/dist/commands/exit.js +1 -0
  101. package/dist/commands/exit.js.map +1 -0
  102. package/dist/commands/export.js +1 -0
  103. package/dist/commands/export.js.map +1 -0
  104. package/dist/commands/find.js +1 -0
  105. package/dist/commands/find.js.map +1 -0
  106. package/dist/commands/free.js +1 -0
  107. package/dist/commands/free.js.map +1 -0
  108. package/dist/commands/grep.js +1 -0
  109. package/dist/commands/grep.js.map +1 -0
  110. package/dist/commands/groups.js +1 -0
  111. package/dist/commands/groups.js.map +1 -0
  112. package/dist/commands/gzip.js +1 -0
  113. package/dist/commands/gzip.js.map +1 -0
  114. package/dist/commands/head.js +1 -0
  115. package/dist/commands/head.js.map +1 -0
  116. package/dist/commands/help.js +1 -0
  117. package/dist/commands/help.js.map +1 -0
  118. package/dist/commands/helpers.d.ts.map +1 -1
  119. package/dist/commands/helpers.js +4 -0
  120. package/dist/commands/helpers.js.map +1 -0
  121. package/dist/commands/history.js +1 -0
  122. package/dist/commands/history.js.map +1 -0
  123. package/dist/commands/hostname.js +1 -0
  124. package/dist/commands/hostname.js.map +1 -0
  125. package/dist/commands/htop.js +1 -0
  126. package/dist/commands/htop.js.map +1 -0
  127. package/dist/commands/id.js +1 -0
  128. package/dist/commands/id.js.map +1 -0
  129. package/dist/commands/index.js +1 -0
  130. package/dist/commands/index.js.map +1 -0
  131. package/dist/commands/kill.js +1 -0
  132. package/dist/commands/kill.js.map +1 -0
  133. package/dist/commands/ln.js +1 -0
  134. package/dist/commands/ln.js.map +1 -0
  135. package/dist/commands/ls.d.ts.map +1 -1
  136. package/dist/commands/ls.js +171 -37
  137. package/dist/commands/ls.js.map +1 -0
  138. package/dist/commands/lsb-release.js +1 -0
  139. package/dist/commands/lsb-release.js.map +1 -0
  140. package/dist/commands/man.js +1 -0
  141. package/dist/commands/man.js.map +1 -0
  142. package/dist/commands/mkdir.js +1 -0
  143. package/dist/commands/mkdir.js.map +1 -0
  144. package/dist/commands/mv.js +1 -0
  145. package/dist/commands/mv.js.map +1 -0
  146. package/dist/commands/nano.js +1 -0
  147. package/dist/commands/nano.js.map +1 -0
  148. package/dist/commands/neofetch.js +1 -0
  149. package/dist/commands/neofetch.js.map +1 -0
  150. package/dist/commands/node.js +1 -0
  151. package/dist/commands/node.js.map +1 -0
  152. package/dist/commands/npm.js +1 -0
  153. package/dist/commands/npm.js.map +1 -0
  154. package/dist/commands/passwd.js +1 -0
  155. package/dist/commands/passwd.js.map +1 -0
  156. package/dist/commands/ping.js +1 -0
  157. package/dist/commands/ping.js.map +1 -0
  158. package/dist/commands/printf.js +1 -0
  159. package/dist/commands/printf.js.map +1 -0
  160. package/dist/commands/ps.js +1 -0
  161. package/dist/commands/ps.js.map +1 -0
  162. package/dist/commands/pwd.js +1 -0
  163. package/dist/commands/pwd.js.map +1 -0
  164. package/dist/commands/python.js +1 -0
  165. package/dist/commands/python.js.map +1 -0
  166. package/dist/commands/read.js +1 -0
  167. package/dist/commands/read.js.map +1 -0
  168. package/dist/commands/registry.js +1 -0
  169. package/dist/commands/registry.js.map +1 -0
  170. package/dist/commands/rm.js +1 -0
  171. package/dist/commands/rm.js.map +1 -0
  172. package/dist/commands/runtime.d.ts.map +1 -1
  173. package/dist/commands/runtime.js +37 -0
  174. package/dist/commands/runtime.js.map +1 -0
  175. package/dist/commands/sed.js +1 -0
  176. package/dist/commands/sed.js.map +1 -0
  177. package/dist/commands/seq.js +1 -0
  178. package/dist/commands/seq.js.map +1 -0
  179. package/dist/commands/set.js +1 -0
  180. package/dist/commands/set.js.map +1 -0
  181. package/dist/commands/sh.d.ts.map +1 -1
  182. package/dist/commands/sh.js +9 -4
  183. package/dist/commands/sh.js.map +1 -0
  184. package/dist/commands/shift.js +1 -0
  185. package/dist/commands/shift.js.map +1 -0
  186. package/dist/commands/sleep.js +1 -0
  187. package/dist/commands/sleep.js.map +1 -0
  188. package/dist/commands/sort.js +1 -0
  189. package/dist/commands/sort.js.map +1 -0
  190. package/dist/commands/source.js +1 -0
  191. package/dist/commands/source.js.map +1 -0
  192. package/dist/commands/stat.js +1 -0
  193. package/dist/commands/stat.js.map +1 -0
  194. package/dist/commands/su.js +1 -0
  195. package/dist/commands/su.js.map +1 -0
  196. package/dist/commands/sudo.js +1 -0
  197. package/dist/commands/sudo.js.map +1 -0
  198. package/dist/commands/tail.js +1 -0
  199. package/dist/commands/tail.js.map +1 -0
  200. package/dist/commands/tar.js +1 -0
  201. package/dist/commands/tar.js.map +1 -0
  202. package/dist/commands/tee.js +1 -0
  203. package/dist/commands/tee.js.map +1 -0
  204. package/dist/commands/test.d.ts.map +1 -1
  205. package/dist/commands/test.js +1 -0
  206. package/dist/commands/test.js.map +1 -0
  207. package/dist/commands/touch.js +1 -0
  208. package/dist/commands/touch.js.map +1 -0
  209. package/dist/commands/tr.js +1 -0
  210. package/dist/commands/tr.js.map +1 -0
  211. package/dist/commands/tree.js +1 -0
  212. package/dist/commands/tree.js.map +1 -0
  213. package/dist/commands/true.js +1 -0
  214. package/dist/commands/true.js.map +1 -0
  215. package/dist/commands/type.js +1 -0
  216. package/dist/commands/type.js.map +1 -0
  217. package/dist/commands/uname.js +1 -0
  218. package/dist/commands/uname.js.map +1 -0
  219. package/dist/commands/uniq.js +1 -0
  220. package/dist/commands/uniq.js.map +1 -0
  221. package/dist/commands/unset.js +1 -0
  222. package/dist/commands/unset.js.map +1 -0
  223. package/dist/commands/uptime.js +1 -0
  224. package/dist/commands/uptime.js.map +1 -0
  225. package/dist/commands/wc.js +2 -1
  226. package/dist/commands/wc.js.map +1 -0
  227. package/dist/commands/wget.js +1 -0
  228. package/dist/commands/wget.js.map +1 -0
  229. package/dist/commands/which.js +1 -0
  230. package/dist/commands/which.js.map +1 -0
  231. package/dist/commands/who.js +1 -0
  232. package/dist/commands/who.js.map +1 -0
  233. package/dist/commands/whoami.js +1 -0
  234. package/dist/commands/whoami.js.map +1 -0
  235. package/dist/commands/xargs.js +1 -0
  236. package/dist/commands/xargs.js.map +1 -0
  237. package/dist/index.js +1 -0
  238. package/dist/index.js.map +1 -0
  239. package/dist/modules/linuxRootfs.d.ts +35 -17
  240. package/dist/modules/linuxRootfs.d.ts.map +1 -1
  241. package/dist/modules/linuxRootfs.js +332 -152
  242. package/dist/modules/linuxRootfs.js.map +1 -0
  243. package/dist/modules/neofetch.js +1 -0
  244. package/dist/modules/neofetch.js.map +1 -0
  245. package/dist/modules/shellInteractive.js +1 -0
  246. package/dist/modules/shellInteractive.js.map +1 -0
  247. package/dist/modules/shellRuntime.js +1 -0
  248. package/dist/modules/shellRuntime.js.map +1 -0
  249. package/dist/self-standalone.js +1 -0
  250. package/dist/self-standalone.js.map +1 -0
  251. package/dist/standalone-wo-sftp.js +1 -0
  252. package/dist/standalone-wo-sftp.js.map +1 -0
  253. package/dist/standalone.js +1 -0
  254. package/dist/standalone.js.map +1 -0
  255. package/dist/types/commands.d.ts +1 -1
  256. package/dist/types/commands.d.ts.map +1 -1
  257. package/dist/types/commands.js +1 -0
  258. package/dist/types/commands.js.map +1 -0
  259. package/dist/types/pipeline.js +1 -0
  260. package/dist/types/pipeline.js.map +1 -0
  261. package/dist/types/streams.js +1 -0
  262. package/dist/types/streams.js.map +1 -0
  263. package/dist/types/vfs.js +1 -0
  264. package/dist/types/vfs.js.map +1 -0
  265. package/dist/utils/expand.d.ts +2 -2
  266. package/dist/utils/expand.d.ts.map +1 -1
  267. package/dist/utils/expand.js +336 -124
  268. package/dist/utils/expand.js.map +1 -0
  269. package/dist/utils/perfLogger.js +1 -0
  270. package/dist/utils/perfLogger.js.map +1 -0
  271. package/dist/utils/tokenize.js +1 -0
  272. package/dist/utils/tokenize.js.map +1 -0
  273. package/dist/utils/vfsDiff.js +1 -0
  274. package/dist/utils/vfsDiff.js.map +1 -0
  275. package/dist/web-api.js +1 -0
  276. package/dist/web-api.js.map +1 -0
  277. package/dist/web-full.js +1 -0
  278. package/dist/web-full.js.map +1 -0
  279. package/dist/web.js +1 -0
  280. package/dist/web.js.map +1 -0
  281. package/docs/.nojekyll +1 -0
  282. package/docs/assets/hierarchy.js +1 -0
  283. package/docs/assets/highlight.css +162 -0
  284. package/docs/assets/icons.js +18 -0
  285. package/docs/assets/icons.svg +1 -0
  286. package/docs/assets/main.js +60 -0
  287. package/docs/assets/navigation.js +1 -0
  288. package/docs/assets/search.js +1 -0
  289. package/docs/assets/style.css +1633 -0
  290. package/docs/classes/HoneyPot.html +31 -0
  291. package/docs/classes/SshClient.html +66 -0
  292. package/docs/classes/VirtualFileSystem.html +262 -0
  293. package/docs/classes/VirtualPackageManager.html +63 -0
  294. package/docs/classes/VirtualSftpServer.html +169 -0
  295. package/docs/classes/VirtualShell.html +265 -0
  296. package/docs/classes/VirtualSshServer.html +177 -0
  297. package/docs/classes/VirtualUserManager.html +276 -0
  298. package/docs/docs/.nojekyll +1 -0
  299. package/docs/docs/assets/hierarchy.js +1 -0
  300. package/docs/docs/assets/highlight.css +162 -0
  301. package/docs/docs/assets/icons.js +18 -0
  302. package/docs/docs/assets/icons.svg +1 -0
  303. package/docs/docs/assets/main.js +60 -0
  304. package/docs/docs/assets/navigation.js +1 -0
  305. package/docs/docs/assets/search.js +1 -0
  306. package/docs/docs/assets/style.css +1633 -0
  307. package/docs/docs/hierarchy.html +1 -0
  308. package/docs/docs/index.html +1842 -0
  309. package/docs/docs/media/LICENSE +21 -0
  310. package/docs/docs/modules.html +1 -0
  311. package/docs/functions/assertDiff.html +6 -0
  312. package/docs/functions/diffSnapshots.html +7 -0
  313. package/docs/functions/formatDiff.html +6 -0
  314. package/docs/functions/getArg.html +13 -0
  315. package/docs/functions/getFlag.html +15 -0
  316. package/docs/functions/ifFlag.html +11 -0
  317. package/docs/hierarchy.html +1 -0
  318. package/docs/index.html +1842 -0
  319. package/docs/interfaces/AuditLogEntry.html +6 -0
  320. package/docs/interfaces/CommandContext.html +22 -0
  321. package/docs/interfaces/CommandResult.html +26 -0
  322. package/docs/interfaces/ExecStream.html +11 -0
  323. package/docs/interfaces/HoneyPotStats.html +14 -0
  324. package/docs/interfaces/InstalledPackage.html +20 -0
  325. package/docs/interfaces/NanoEditorSession.html +8 -0
  326. package/docs/interfaces/PackageDefinition.html +30 -0
  327. package/docs/interfaces/PackageFile.html +8 -0
  328. package/docs/interfaces/RemoveOptions.html +4 -0
  329. package/docs/interfaces/ShellEnv.html +6 -0
  330. package/docs/interfaces/ShellModule.html +14 -0
  331. package/docs/interfaces/ShellProperties.html +14 -0
  332. package/docs/interfaces/ShellStream.html +11 -0
  333. package/docs/interfaces/SudoChallenge.html +24 -0
  334. package/docs/interfaces/VfsBaseNode.html +12 -0
  335. package/docs/interfaces/VfsDiff.html +10 -0
  336. package/docs/interfaces/VfsDiffEntry.html +6 -0
  337. package/docs/interfaces/VfsDiffModified.html +10 -0
  338. package/docs/interfaces/VfsDirectoryNode.html +15 -0
  339. package/docs/interfaces/VfsFileNode.html +17 -0
  340. package/docs/interfaces/VfsOptions.html +12 -0
  341. package/docs/interfaces/VfsSnapshot.html +3 -0
  342. package/docs/interfaces/VfsSnapshotBaseNode.html +8 -0
  343. package/docs/interfaces/VfsSnapshotDirectoryNode.html +10 -0
  344. package/docs/interfaces/VfsSnapshotFileNode.html +12 -0
  345. package/docs/interfaces/WriteFileOptions.html +6 -0
  346. package/docs/media/LICENSE +21 -0
  347. package/docs/modules.html +1 -0
  348. package/docs/types/CommandMode.html +2 -0
  349. package/docs/types/CommandOutcome.html +2 -0
  350. package/docs/types/VfsNodeStats.html +2 -0
  351. package/docs/types/VfsNodeType.html +2 -0
  352. package/docs/types/VfsPersistenceMode.html +5 -0
  353. package/docs/types/VfsSnapshotNode.html +2 -0
  354. package/examples/web.min.js +5 -5
  355. package/package.json +7 -4
  356. package/src/VirtualFileSystem/index.ts +11 -9
  357. package/src/VirtualShell/shellParser.ts +3 -2
  358. package/src/bun.d.ts +1 -0
  359. package/src/commands/awk.ts +1 -2
  360. package/src/commands/cd.ts +2 -2
  361. package/src/commands/helpers.ts +3 -0
  362. package/src/commands/ls.ts +210 -41
  363. package/src/commands/runtime.ts +56 -3
  364. package/src/commands/sh.ts +7 -4
  365. package/src/commands/test.ts +4 -2
  366. package/src/commands/wc.ts +1 -1
  367. package/src/modules/linuxRootfs.ts +420 -231
  368. package/src/types/commands.ts +1 -1
  369. package/src/utils/expand.ts +256 -76
  370. package/tests/command-helpers.test.ts +80 -0
  371. package/tests/commands-admin-net.test.ts +441 -0
  372. package/tests/commands-advanced.test.ts +456 -0
  373. package/tests/commands-core.test.ts +562 -0
  374. package/tests/commands-missing.test.ts +570 -0
  375. package/tests/commands-specific-units.test.ts +327 -0
  376. package/tests/commands-text-sys.test.ts +445 -0
  377. package/tests/expand.test.ts +170 -0
  378. package/tests/helpers.test.ts +75 -0
  379. package/tests/test-helper.ts +79 -0
  380. package/tsconfig.json +3 -0
  381. package/typedoc.json +8 -0
  382. package/tests/bun-test-shim.ts +0 -9
@@ -14,5 +14,6 @@
14
14
 
15
15
  "LICENSE": true,
16
16
  "tsconfig.tsbuildinfo": true
17
- }
17
+ },
18
+ "js/ts.tsdk.path": "node_modules/typescript/lib"
18
19
  }
package/README.md CHANGED
@@ -1231,27 +1231,145 @@ On every `VirtualShell` init, a realistic Linux hierarchy is bootstrapped idempo
1231
1231
 
1232
1232
  ```
1233
1233
  /
1234
- ├── bin -> /usr/bin (symlink, Debian-style)
1235
- ├── dev/ null, zero, random, urandom, pts/, shm/
1234
+ ├── bin -> usr/bin (symlink, Debian-style)
1235
+ ├── sbin -> usr/sbin (symlink, Debian-style)
1236
+ ├── lib/ (ELF stub)
1237
+ ├── lib/modules/
1238
+ ├── lib/x86_64-linux-gnu/
1239
+ ├── lib64 -> usr/lib64 (symlink, Debian-style)
1240
+ ├── initrd.img -> boot/initrd.img-<kernel>
1241
+ ├── initrd.img.old -> boot/initrd.img-<prev>
1242
+ ├── vmlinuz -> boot/vmlinuz-<kernel>
1243
+ ├── vmlinuz.old -> boot/vmlinuz-<prev>
1244
+ ├── lost+found/ (mode 0o700, ext4 fsck dir)
1245
+
1246
+ ├── boot/
1247
+ │ ├── grub/
1248
+ │ │ └── grub.cfg virtual bootloader config
1249
+ │ ├── vmlinuz-<kernel> kernel stub
1250
+ │ ├── initrd.img-<kernel> initrd stub
1251
+ │ ├── System.map-<kernel>
1252
+ │ └── config-<kernel>
1253
+
1254
+ ├── dev/
1255
+ │ ├── null / zero / full (0o666)
1256
+ │ ├── random / urandom (0o444)
1257
+ │ ├── mem (0o640)
1258
+ │ ├── console / tty / tty0 / tty1 / ttyS0
1259
+ │ ├── sda / sda1 / sda2 block device stubs
1260
+ │ ├── loop0-loop7 + loop-control
1261
+ │ ├── stdin / stdout / stderr
1262
+ │ ├── pts/
1263
+ │ └── shm/
1264
+
1236
1265
  ├── etc/
1237
- │ ├── group synced from VirtualUserManager
1266
+ │ ├── apt/sources.list + sources.list.d/
1267
+ │ ├── cron.d/
1268
+ │ ├── init.d/
1269
+ │ ├── ld.so.conf + ld.so.conf.d/x86_64-linux-gnu.conf
1270
+ │ ├── network/interfaces lo + eth0 (DHCP)
1271
+ │ ├── pam.d/ common-auth|account|password|session + sshd
1272
+ │ ├── security/limits.conf + access.conf
1273
+ │ ├── sudoers (0o440) + sudoers.d/
1274
+ │ ├── systemd/system/
1275
+ │ ├── debian_version 12.0
1276
+ │ ├── fstab UUID stubs + tmpfs entries
1277
+ │ ├── group synced from VirtualUserManager
1238
1278
  │ ├── hostname
1239
- │ ├── hosts 127.0.0.1 localhost + VM hostname
1240
- │ ├── os-release NAME="Fortune GNU/Linux" + ShellProperties
1241
- │ ├── passwd synced from VirtualUserManager
1242
- │ ├── resolv.conf 1.1.1.1 + 8.8.8.8
1243
- └── shadow (mode 0o640)
1244
- ├── proc/
1245
- │ ├── 1/ init process (cmdline, status, comm, environ, fd/)
1246
- │ ├── <pid>/ one entry per active session (pts/* TTY)
1247
- │ ├── self/ mirrors most recent session's /proc/<pid>/
1248
- │ ├── cpuinfo real host CPU info
1249
- │ ├── meminfo real host memory
1250
- │ └── ...
1251
- ├── sys/devices/virtual/dmi/id/
1252
- ├── tmp/ (mode 0o1777 sticky)
1253
- ├── usr/bin/ stubs for all built-in commands
1254
- └── var/lib/dpkg/status managed by VirtualPackageManager
1279
+ │ ├── hosts 127.0.0.1 + ::1 + VM hostname
1280
+ │ ├── issue login banner
1281
+ │ ├── locale.conf LANG=en_US.UTF-8
1282
+ │ ├── localtime / timezone UTC
1283
+ ├── login.defs UID_MIN=1000 SHA512
1284
+ ├── motd uses ShellProperties
1285
+ │ ├── os-release NAME="Fortune GNU/Linux" + ShellProperties
1286
+ │ ├── passwd synced from VirtualUserManager
1287
+ │ ├── profile PATH + PS1 defaults
1288
+ │ ├── resolv.conf 1.1.1.1 + 8.8.8.8
1289
+ │ ├── shadow (mode 0o640, fake hashes)
1290
+ │ └── shells /bin/sh /bin/bash /usr/bin/bash
1291
+
1292
+ ├── home/
1293
+ ├── media/
1294
+ ├── mnt/
1295
+ ├── opt/
1296
+ ├── snap/bin/
1297
+ ├── srv/
1298
+
1299
+ ├── proc/ kernel simulation engine (refreshed on demand)
1300
+ │ ├── boot/log + version kernel boot sequence
1301
+ │ ├── net/dev + if_inet6 + tcp + tcp6
1302
+ │ ├── sys/kernel/ hostname, ostype, osrelease, pid_max,
1303
+ │ │ threads-max, randomize_va_space, dmesg_restrict
1304
+ │ ├── sys/net/ipv4/ip_forward
1305
+ │ ├── sys/vm/swappiness + overcommit_memory
1306
+ │ ├── self/mounts mirrors most recent session's /proc/<pid>/
1307
+ │ ├── 1/ init (cmdline, comm, stat, status, environ, fd/, fdinfo/)
1308
+ │ ├── <pid>/ one subtree per active session (TTY-derived PID)
1309
+ │ ├── cmdline kernel boot args
1310
+ │ ├── cpuinfo real host CPU passthrough
1311
+ │ ├── filesystems
1312
+ │ ├── hostname
1313
+ │ ├── loadavg computed dynamically
1314
+ │ ├── meminfo real host memory (Total/Free/Available/Buffers/Cached/Swap)
1315
+ │ ├── mounts
1316
+ │ ├── partitions
1317
+ │ ├── swaps
1318
+ │ ├── uptime computed from shellStartTime
1319
+ │ └── version Linux <kernel> (fortune@build)
1320
+
1321
+ ├── root/ (mode 0o700)
1322
+ │ ├── .bashrc colored PS1, PATH, ll/la aliases
1323
+ │ └── .profile
1324
+
1325
+ ├── run/ (systemd tmpfs runtime)
1326
+ │ ├── lock/
1327
+ │ ├── systemd/
1328
+ │ ├── user/
1329
+ │ └── utmp
1330
+
1331
+ ├── sys/ sysfs graph — deterministic, seeded from hostname (fnv1a)
1332
+ │ ├── class/net/
1333
+ │ ├── devices/virtual/dmi/id/
1334
+ │ │ ├── bios_vendor / bios_version / bios_date
1335
+ │ │ ├── sys_vendor / product_name / product_family / product_version
1336
+ │ │ ├── product_uuid / product_serial
1337
+ │ │ ├── chassis_type / chassis_vendor / chassis_version
1338
+ │ │ ├── board_name
1339
+ │ │ └── modalias
1340
+ │ └── kernel/
1341
+ │ ├── hostname
1342
+ │ ├── osrelease
1343
+ │ └── ostype
1344
+
1345
+ ├── tmp/ (mode 0o1777, sticky)
1346
+
1347
+ ├── usr/
1348
+ │ ├── bin/ stubs for all built-in commands (exec builtin <name>)
1349
+ │ ├── sbin/
1350
+ │ ├── lib/ + lib64/
1351
+ │ ├── local/bin|lib|share/
1352
+ │ └── share/doc|man/man1/
1353
+
1354
+ └── var/
1355
+ ├── cache/apt/archives/
1356
+ ├── lib/
1357
+ │ ├── apt/lists/
1358
+ │ ├── misc/
1359
+ │ └── dpkg/
1360
+ │ ├── available
1361
+ │ ├── info/
1362
+ │ └── status managed by VirtualPackageManager
1363
+ ├── log/
1364
+ │ ├── apt/history.log + term.log
1365
+ │ ├── auth.log
1366
+ │ ├── dpkg.log
1367
+ │ ├── kern.log
1368
+ │ └── syslog
1369
+ ├── mail/
1370
+ ├── run -> /run (legacy symlink)
1371
+ ├── spool/cron/
1372
+ └── tmp/
1255
1373
  ```
1256
1374
 
1257
1375
  ```typescript
@@ -1,40 +1,40 @@
1
1
  Benchmarking VirtualShell concurrency:
2
2
 
3
3
  Running 1 shells...
4
- Initialized 1 shells in 89ms, RSS 85 MB
5
- Executed shell commands in 9ms, RSS now 86 MB (+1 MB)
4
+ Initialized 1 shells in 55ms, RSS 96 MB
5
+ Executed shell commands in 5ms, RSS now 97 MB (+0 MB)
6
6
 
7
7
  Running 2 shells...
8
- Initialized 2 shells in 19ms, RSS 89 MB
9
- Executed shell commands in 1ms, RSS now 89 MB (+0 MB)
8
+ Initialized 2 shells in 7ms, RSS 99 MB
9
+ Executed shell commands in 1ms, RSS now 99 MB (+0 MB)
10
10
 
11
11
  Running 5 shells...
12
- Initialized 5 shells in 21ms, RSS 93 MB
13
- Executed shell commands in 1ms, RSS now 93 MB (+0 MB)
12
+ Initialized 5 shells in 18ms, RSS 108 MB
13
+ Executed shell commands in 1ms, RSS now 109 MB (+1 MB)
14
14
 
15
15
  Running 10 shells...
16
- Initialized 10 shells in 40ms, RSS 102 MB
17
- Executed shell commands in 6ms, RSS now 103 MB (+1 MB)
16
+ Initialized 10 shells in 33ms, RSS 122 MB
17
+ Executed shell commands in 2ms, RSS now 122 MB (+0 MB)
18
18
 
19
19
  Running 20 shells...
20
- Initialized 20 shells in 72ms, RSS 116 MB
21
- Executed shell commands in 4ms, RSS now 117 MB (+1 MB)
20
+ Initialized 20 shells in 64ms, RSS 147 MB
21
+ Executed shell commands in 4ms, RSS now 148 MB (+1 MB)
22
22
 
23
23
  Running 50 shells...
24
- Initialized 50 shells in 140ms, RSS 142 MB
25
- Executed shell commands in 8ms, RSS now 142 MB (+0 MB)
24
+ Initialized 50 shells in 127ms, RSS 157 MB
25
+ Executed shell commands in 5ms, RSS now 158 MB (+0 MB)
26
26
 
27
27
  Running 100 shells...
28
- Initialized 100 shells in 315ms, RSS 160 MB
29
- Executed shell commands in 18ms, RSS now 160 MB (+0 MB)
28
+ Initialized 100 shells in 256ms, RSS 185 MB
29
+ Executed shell commands in 9ms, RSS now 186 MB (+0 MB)
30
30
 
31
31
  Summary:
32
32
 
33
33
  count init_ms cmd_ms init_rss final_rss delta_rss
34
- 1 89 9 85 MB 86 MB 1 MB
35
- 2 19 1 89 MB 89 MB 0 MB
36
- 5 21 1 93 MB 93 MB 0 MB
37
- 10 40 6 102 MB 103 MB 1 MB
38
- 20 72 4 116 MB 117 MB 1 MB
39
- 50 140 8 142 MB 142 MB 0 MB
40
- 100 315 18 160 MB 160 MB 0 MB
34
+ 1 55 5 96 MB 97 MB 0 MB
35
+ 2 7 1 99 MB 99 MB 0 MB
36
+ 5 18 1 108 MB 109 MB 1 MB
37
+ 10 33 2 122 MB 122 MB 0 MB
38
+ 20 64 4 147 MB 148 MB 1 MB
39
+ 50 127 5 157 MB 158 MB 0 MB
40
+ 100 256 9 185 MB 186 MB 0 MB