typescript-virtual-container 1.5.2 → 1.5.4

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 (364) hide show
  1. package/README.md +43 -23
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/SSHMimic/executor.js +23 -5
  4. package/dist/commands/basename.d.ts +13 -0
  5. package/dist/commands/basename.js +45 -0
  6. package/dist/commands/file.d.ts +8 -0
  7. package/dist/commands/file.js +57 -0
  8. package/dist/commands/fun.d.ts +32 -0
  9. package/dist/commands/fun.js +172 -0
  10. package/dist/commands/ifconfig.d.ts +7 -0
  11. package/dist/commands/ifconfig.js +52 -0
  12. package/dist/commands/last.d.ts +13 -0
  13. package/dist/commands/last.js +68 -0
  14. package/dist/commands/manuals-bundle.js +598 -6
  15. package/dist/commands/registry.js +24 -2
  16. package/dist/commands/runtime.js +159 -106
  17. package/dist/commands/sh.js +5 -0
  18. package/dist/commands/tput.d.ts +13 -0
  19. package/dist/commands/tput.js +76 -0
  20. package/dist/commands/w.d.ts +7 -0
  21. package/dist/commands/w.js +38 -0
  22. package/dist/utils/expand.d.ts +12 -0
  23. package/dist/utils/expand.js +84 -0
  24. package/package.json +9 -3
  25. package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -50
  26. package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -31
  27. package/.github/dependabot.yml +0 -27
  28. package/.github/pull_request_template.md +0 -21
  29. package/.github/workflows/create-pull-request.yml +0 -85
  30. package/.github/workflows/publish.yml +0 -25
  31. package/.github/workflows/test-battery.yml +0 -102
  32. package/.vscode/settings.json +0 -20
  33. package/CODE_OF_CONDUCT.md +0 -39
  34. package/CONTRIBUTING.md +0 -59
  35. package/HONEYPOT.md +0 -358
  36. package/SECURITY.md +0 -33
  37. package/benchmark-results.txt +0 -40
  38. package/benchmark-virtualshell.ts +0 -88
  39. package/biome.json +0 -37
  40. package/build.js +0 -22
  41. package/builds/fortune-nyx-v1.5.1-directbash-k6.1.0.mjs +0 -1768
  42. package/builds/fortune-nyx-v1.5.1-ssh-nosftp.js +0 -1768
  43. package/builds/fortune-nyx-v1.5.1-ssh.cjs +0 -1769
  44. package/builds/fortune-nyx-v1.5.1-web.min.js +0 -17022
  45. package/bun.lock +0 -244
  46. package/docs/.nojekyll +0 -1
  47. package/docs/app.js +0 -1755
  48. package/docs/assets/hierarchy.js +0 -1
  49. package/docs/assets/highlight.css +0 -162
  50. package/docs/assets/icons.js +0 -18
  51. package/docs/assets/icons.svg +0 -1
  52. package/docs/assets/main.js +0 -60
  53. package/docs/assets/navigation.js +0 -1
  54. package/docs/assets/search.js +0 -1
  55. package/docs/assets/style.css +0 -1633
  56. package/docs/classes/HoneyPot.html +0 -31
  57. package/docs/classes/IdleManager.html +0 -162
  58. package/docs/classes/SshClient.html +0 -66
  59. package/docs/classes/VirtualFileSystem.html +0 -279
  60. package/docs/classes/VirtualPackageManager.html +0 -63
  61. package/docs/classes/VirtualSftpServer.html +0 -169
  62. package/docs/classes/VirtualShell.html +0 -285
  63. package/docs/classes/VirtualSshServer.html +0 -182
  64. package/docs/classes/VirtualUserManager.html +0 -276
  65. package/docs/demo.html +0 -82
  66. package/docs/functions/assertDiff.html +0 -6
  67. package/docs/functions/diffSnapshots.html +0 -7
  68. package/docs/functions/formatDiff.html +0 -6
  69. package/docs/functions/getArg.html +0 -13
  70. package/docs/functions/getFlag.html +0 -15
  71. package/docs/functions/ifFlag.html +0 -11
  72. package/docs/hierarchy.html +0 -1
  73. package/docs/index.html +0 -1869
  74. package/docs/interfaces/AuditLogEntry.html +0 -6
  75. package/docs/interfaces/CommandContext.html +0 -22
  76. package/docs/interfaces/CommandResult.html +0 -26
  77. package/docs/interfaces/ExecStream.html +0 -11
  78. package/docs/interfaces/HoneyPotStats.html +0 -16
  79. package/docs/interfaces/IdleManagerOptions.html +0 -7
  80. package/docs/interfaces/InstalledPackage.html +0 -20
  81. package/docs/interfaces/NanoEditorSession.html +0 -8
  82. package/docs/interfaces/PackageDefinition.html +0 -30
  83. package/docs/interfaces/PackageFile.html +0 -8
  84. package/docs/interfaces/PasswordChallenge.html +0 -16
  85. package/docs/interfaces/RemoveOptions.html +0 -4
  86. package/docs/interfaces/ShellEnv.html +0 -6
  87. package/docs/interfaces/ShellModule.html +0 -14
  88. package/docs/interfaces/ShellProperties.html +0 -14
  89. package/docs/interfaces/ShellStream.html +0 -11
  90. package/docs/interfaces/SudoChallenge.html +0 -24
  91. package/docs/interfaces/VfsBaseNode.html +0 -12
  92. package/docs/interfaces/VfsDiff.html +0 -10
  93. package/docs/interfaces/VfsDiffEntry.html +0 -6
  94. package/docs/interfaces/VfsDiffModified.html +0 -10
  95. package/docs/interfaces/VfsDirectoryNode.html +0 -15
  96. package/docs/interfaces/VfsFileNode.html +0 -17
  97. package/docs/interfaces/VfsOptions.html +0 -26
  98. package/docs/interfaces/VfsSnapshot.html +0 -3
  99. package/docs/interfaces/VfsSnapshotBaseNode.html +0 -8
  100. package/docs/interfaces/VfsSnapshotDirectoryNode.html +0 -10
  101. package/docs/interfaces/VfsSnapshotFileNode.html +0 -12
  102. package/docs/interfaces/VirtualActiveSession.html +0 -12
  103. package/docs/interfaces/VirtualSftpServerOptions.html +0 -7
  104. package/docs/interfaces/VirtualShellVfsLike.html +0 -15
  105. package/docs/interfaces/VirtualShellVfsOptions.html +0 -3
  106. package/docs/interfaces/WriteFileOptions.html +0 -6
  107. package/docs/media/LICENSE +0 -21
  108. package/docs/modules.html +0 -1
  109. package/docs/types/ArgParseOptions.html +0 -4
  110. package/docs/types/CommandMode.html +0 -2
  111. package/docs/types/CommandOutcome.html +0 -2
  112. package/docs/types/IdleState.html +0 -1
  113. package/docs/types/VfsNodeStats.html +0 -2
  114. package/docs/types/VfsNodeType.html +0 -2
  115. package/docs/types/VfsPersistenceMode.html +0 -5
  116. package/docs/types/VfsSnapshotNode.html +0 -2
  117. package/examples/README.md +0 -288
  118. package/examples/app.js +0 -1755
  119. package/examples/app.ts +0 -299
  120. package/examples/build.js +0 -27
  121. package/examples/demo.html +0 -33
  122. package/examples/honeypot-audit.ts +0 -180
  123. package/examples/honeypot-export.ts +0 -253
  124. package/examples/honeypot-quickstart.ts +0 -110
  125. package/examples/index.html +0 -82
  126. package/examples/server.js +0 -55
  127. package/polyfills/buffer.js +0 -117
  128. package/polyfills/node_child_process/index.js +0 -2
  129. package/polyfills/node_crypto/index.js +0 -167
  130. package/polyfills/node_events/index.js +0 -9
  131. package/polyfills/node_fs/index.js +0 -202
  132. package/polyfills/node_fs/promises.js +0 -4
  133. package/polyfills/node_os/index.js +0 -9
  134. package/polyfills/node_path/index.js +0 -28
  135. package/polyfills/node_vm/index.js +0 -7
  136. package/polyfills/node_zlib/index.js +0 -3
  137. package/polyfills/process.js +0 -14
  138. package/polyfills/ssh2/index.js +0 -75
  139. package/scripts/build-all.mjs +0 -226
  140. package/scripts/build-names.mjs +0 -43
  141. package/scripts/generate-manuals-bundle.mjs +0 -49
  142. package/scripts/postinstall.js +0 -42
  143. package/scripts/publish-package.sh +0 -70
  144. package/src/Honeypot/index.ts +0 -457
  145. package/src/SSHClient/index.ts +0 -270
  146. package/src/SSHMimic/exec.ts +0 -49
  147. package/src/SSHMimic/executor.ts +0 -251
  148. package/src/SSHMimic/hostKey.ts +0 -21
  149. package/src/SSHMimic/index.ts +0 -337
  150. package/src/SSHMimic/loginBanner.ts +0 -36
  151. package/src/SSHMimic/loginFormat.ts +0 -10
  152. package/src/SSHMimic/prompt.ts +0 -14
  153. package/src/SSHMimic/sftp.ts +0 -883
  154. package/src/VirtualFileSystem/binaryPack.ts +0 -258
  155. package/src/VirtualFileSystem/index.ts +0 -1193
  156. package/src/VirtualFileSystem/internalTypes.ts +0 -43
  157. package/src/VirtualFileSystem/journal.ts +0 -171
  158. package/src/VirtualFileSystem/path.ts +0 -74
  159. package/src/VirtualPackageManager/index.ts +0 -1006
  160. package/src/VirtualShell/idleManager.ts +0 -137
  161. package/src/VirtualShell/index.ts +0 -475
  162. package/src/VirtualShell/shell.ts +0 -700
  163. package/src/VirtualShell/shellParser.ts +0 -285
  164. package/src/VirtualUserManager/index.ts +0 -758
  165. package/src/bun.d.ts +0 -1
  166. package/src/commands/adduser.ts +0 -103
  167. package/src/commands/alias.ts +0 -69
  168. package/src/commands/apt.ts +0 -233
  169. package/src/commands/awk.ts +0 -168
  170. package/src/commands/base64.ts +0 -29
  171. package/src/commands/cat.ts +0 -52
  172. package/src/commands/cd.ts +0 -25
  173. package/src/commands/chmod.ts +0 -85
  174. package/src/commands/clear.ts +0 -15
  175. package/src/commands/command-helpers.ts +0 -286
  176. package/src/commands/cp.ts +0 -83
  177. package/src/commands/curl.ts +0 -147
  178. package/src/commands/cut.ts +0 -36
  179. package/src/commands/date.ts +0 -30
  180. package/src/commands/declare.ts +0 -49
  181. package/src/commands/deluser.ts +0 -98
  182. package/src/commands/df.ts +0 -23
  183. package/src/commands/diff.ts +0 -43
  184. package/src/commands/dpkg.ts +0 -180
  185. package/src/commands/du.ts +0 -56
  186. package/src/commands/echo.ts +0 -58
  187. package/src/commands/env.ts +0 -23
  188. package/src/commands/exit.ts +0 -18
  189. package/src/commands/export.ts +0 -34
  190. package/src/commands/find.ts +0 -68
  191. package/src/commands/free.ts +0 -47
  192. package/src/commands/grep.ts +0 -116
  193. package/src/commands/groups.ts +0 -19
  194. package/src/commands/gzip.ts +0 -88
  195. package/src/commands/head.ts +0 -52
  196. package/src/commands/help.ts +0 -152
  197. package/src/commands/helpers.ts +0 -234
  198. package/src/commands/history.ts +0 -34
  199. package/src/commands/hostname.ts +0 -14
  200. package/src/commands/htop.ts +0 -20
  201. package/src/commands/id.ts +0 -19
  202. package/src/commands/index.ts +0 -9
  203. package/src/commands/kill.ts +0 -19
  204. package/src/commands/ln.ts +0 -71
  205. package/src/commands/ls.ts +0 -243
  206. package/src/commands/lsb-release.ts +0 -63
  207. package/src/commands/man.ts +0 -31
  208. package/src/commands/manuals/adduser.txt +0 -11
  209. package/src/commands/manuals/apt-cache.txt +0 -12
  210. package/src/commands/manuals/apt.txt +0 -20
  211. package/src/commands/manuals/awk.txt +0 -13
  212. package/src/commands/manuals/cat.txt +0 -14
  213. package/src/commands/manuals/cd.txt +0 -16
  214. package/src/commands/manuals/chmod.txt +0 -16
  215. package/src/commands/manuals/clear.txt +0 -10
  216. package/src/commands/manuals/cp.txt +0 -10
  217. package/src/commands/manuals/curl.txt +0 -20
  218. package/src/commands/manuals/date.txt +0 -14
  219. package/src/commands/manuals/declare.txt +0 -12
  220. package/src/commands/manuals/deluser.txt +0 -10
  221. package/src/commands/manuals/df.txt +0 -10
  222. package/src/commands/manuals/dpkg-query.txt +0 -11
  223. package/src/commands/manuals/dpkg.txt +0 -14
  224. package/src/commands/manuals/du.txt +0 -11
  225. package/src/commands/manuals/echo.txt +0 -11
  226. package/src/commands/manuals/false.txt +0 -10
  227. package/src/commands/manuals/find.txt +0 -11
  228. package/src/commands/manuals/free.txt +0 -12
  229. package/src/commands/manuals/grep.txt +0 -13
  230. package/src/commands/manuals/groups.txt +0 -10
  231. package/src/commands/manuals/gzip.txt +0 -11
  232. package/src/commands/manuals/head.txt +0 -10
  233. package/src/commands/manuals/help.txt +0 -11
  234. package/src/commands/manuals/history.txt +0 -11
  235. package/src/commands/manuals/hostname.txt +0 -10
  236. package/src/commands/manuals/id.txt +0 -10
  237. package/src/commands/manuals/kill.txt +0 -13
  238. package/src/commands/manuals/ls.txt +0 -20
  239. package/src/commands/manuals/lsb_release.txt +0 -14
  240. package/src/commands/manuals/mkdir.txt +0 -10
  241. package/src/commands/manuals/mv.txt +0 -10
  242. package/src/commands/manuals/nano.txt +0 -11
  243. package/src/commands/manuals/neofetch.txt +0 -10
  244. package/src/commands/manuals/node.txt +0 -13
  245. package/src/commands/manuals/npm.txt +0 -13
  246. package/src/commands/manuals/npx.txt +0 -13
  247. package/src/commands/manuals/passwd.txt +0 -11
  248. package/src/commands/manuals/ping.txt +0 -10
  249. package/src/commands/manuals/printf.txt +0 -11
  250. package/src/commands/manuals/ps.txt +0 -10
  251. package/src/commands/manuals/pwd.txt +0 -10
  252. package/src/commands/manuals/python3.txt +0 -13
  253. package/src/commands/manuals/readlink.txt +0 -10
  254. package/src/commands/manuals/return.txt +0 -10
  255. package/src/commands/manuals/rm.txt +0 -10
  256. package/src/commands/manuals/sed.txt +0 -11
  257. package/src/commands/manuals/set.txt +0 -11
  258. package/src/commands/manuals/shift.txt +0 -10
  259. package/src/commands/manuals/sleep.txt +0 -10
  260. package/src/commands/manuals/sort.txt +0 -12
  261. package/src/commands/manuals/source.txt +0 -11
  262. package/src/commands/manuals/ssh.txt +0 -11
  263. package/src/commands/manuals/stat.txt +0 -10
  264. package/src/commands/manuals/su.txt +0 -13
  265. package/src/commands/manuals/sudo.txt +0 -11
  266. package/src/commands/manuals/tail.txt +0 -10
  267. package/src/commands/manuals/tar.txt +0 -19
  268. package/src/commands/manuals/tee.txt +0 -10
  269. package/src/commands/manuals/test.txt +0 -11
  270. package/src/commands/manuals/touch.txt +0 -11
  271. package/src/commands/manuals/tr.txt +0 -10
  272. package/src/commands/manuals/trap.txt +0 -10
  273. package/src/commands/manuals/true.txt +0 -10
  274. package/src/commands/manuals/type.txt +0 -10
  275. package/src/commands/manuals/uname.txt +0 -12
  276. package/src/commands/manuals/uniq.txt +0 -12
  277. package/src/commands/manuals/unset.txt +0 -10
  278. package/src/commands/manuals/uptime.txt +0 -11
  279. package/src/commands/manuals/wc.txt +0 -12
  280. package/src/commands/manuals/wget.txt +0 -12
  281. package/src/commands/manuals/which.txt +0 -10
  282. package/src/commands/manuals/whoami.txt +0 -10
  283. package/src/commands/manuals/xargs.txt +0 -10
  284. package/src/commands/manuals-bundle.ts +0 -898
  285. package/src/commands/mkdir.ts +0 -31
  286. package/src/commands/mv.ts +0 -50
  287. package/src/commands/nano.ts +0 -38
  288. package/src/commands/neofetch.ts +0 -53
  289. package/src/commands/node.ts +0 -341
  290. package/src/commands/npm.ts +0 -132
  291. package/src/commands/passwd.ts +0 -50
  292. package/src/commands/ping.ts +0 -32
  293. package/src/commands/printf.ts +0 -129
  294. package/src/commands/ps.ts +0 -58
  295. package/src/commands/pwd.ts +0 -9
  296. package/src/commands/python.ts +0 -2229
  297. package/src/commands/read.ts +0 -46
  298. package/src/commands/registry.ts +0 -249
  299. package/src/commands/rm.ts +0 -42
  300. package/src/commands/runtime.ts +0 -378
  301. package/src/commands/sed.ts +0 -68
  302. package/src/commands/seq.ts +0 -43
  303. package/src/commands/set.ts +0 -29
  304. package/src/commands/sh.ts +0 -467
  305. package/src/commands/shift.ts +0 -63
  306. package/src/commands/sleep.ts +0 -20
  307. package/src/commands/sort.ts +0 -46
  308. package/src/commands/source.ts +0 -52
  309. package/src/commands/stat.ts +0 -61
  310. package/src/commands/su.ts +0 -72
  311. package/src/commands/sudo.ts +0 -76
  312. package/src/commands/tail.ts +0 -53
  313. package/src/commands/tar.ts +0 -102
  314. package/src/commands/tee.ts +0 -36
  315. package/src/commands/test.ts +0 -137
  316. package/src/commands/touch.ts +0 -28
  317. package/src/commands/tr.ts +0 -70
  318. package/src/commands/tree.ts +0 -20
  319. package/src/commands/true.ts +0 -27
  320. package/src/commands/type.ts +0 -48
  321. package/src/commands/uname.ts +0 -29
  322. package/src/commands/uniq.ts +0 -39
  323. package/src/commands/unset.ts +0 -17
  324. package/src/commands/uptime.ts +0 -54
  325. package/src/commands/wc.ts +0 -55
  326. package/src/commands/wget.ts +0 -148
  327. package/src/commands/which.ts +0 -37
  328. package/src/commands/who.ts +0 -25
  329. package/src/commands/whoami.ts +0 -14
  330. package/src/commands/xargs.ts +0 -31
  331. package/src/index.ts +0 -67
  332. package/src/modules/linuxRootfs.ts +0 -1961
  333. package/src/modules/neofetch.ts +0 -358
  334. package/src/modules/shellInteractive.ts +0 -57
  335. package/src/modules/shellRuntime.ts +0 -76
  336. package/src/self-standalone.ts +0 -542
  337. package/src/standalone-wo-sftp.ts +0 -38
  338. package/src/standalone.ts +0 -72
  339. package/src/types/commands.ts +0 -146
  340. package/src/types/pipeline.ts +0 -52
  341. package/src/types/streams.ts +0 -32
  342. package/src/types/tar-stream.d.ts +0 -38
  343. package/src/types/vfs.ts +0 -98
  344. package/src/utils/expand.ts +0 -491
  345. package/src/utils/perfLogger.ts +0 -72
  346. package/src/utils/tokenize.ts +0 -98
  347. package/src/utils/vfsDiff.ts +0 -275
  348. package/tests/command-helpers.test.ts +0 -116
  349. package/tests/commands-admin-net.test.ts +0 -441
  350. package/tests/commands-advanced.test.ts +0 -456
  351. package/tests/commands-core.test.ts +0 -562
  352. package/tests/commands-missing.test.ts +0 -570
  353. package/tests/commands-specific-units.test.ts +0 -327
  354. package/tests/commands-text-sys.test.ts +0 -445
  355. package/tests/expand.test.ts +0 -170
  356. package/tests/helpers.test.ts +0 -97
  357. package/tests/new-features.test.ts +0 -1036
  358. package/tests/parser-executor.test.ts +0 -37
  359. package/tests/sftp.test.ts +0 -323
  360. package/tests/ssh-exec.test.ts +0 -45
  361. package/tests/test-helper.ts +0 -79
  362. package/tests/users.test.ts +0 -86
  363. package/tsconfig.json +0 -49
  364. package/typedoc.json +0 -47
@@ -1,146 +0,0 @@
1
- /** Command invocation mode used by shell runtime. */
2
- export type CommandMode = "shell" | "exec";
3
-
4
- import type { VirtualShell } from "../VirtualShell";
5
- import type { VirtualActiveSession } from "../VirtualUserManager";
6
-
7
- /**
8
- * Normalized command execution output.
9
- *
10
- * A command can write text, control session lifecycle, request UI state
11
- * transitions, and update active identity/cwd.
12
- */
13
- export interface CommandResult {
14
- /** Standard output payload to append in terminal. */
15
- stdout?: string;
16
- /** Standard error payload to append in terminal. */
17
- stderr?: string;
18
- /** Request full terminal clear before next prompt. */
19
- clearScreen?: boolean;
20
- /** Request current shell/exec session close. */
21
- closeSession?: boolean;
22
- /** Optional exit code (default behavior handled by caller). */
23
- exitCode?: number;
24
- /** Optional cwd to apply for next prompt iteration. */
25
- nextCwd?: string;
26
- /** Optional user switch for current session state. */
27
- switchUser?: string;
28
- /** Request opening built-in nano editor workflow. */
29
- openEditor?: NanoEditorSession;
30
- /** Request opening built-in htop-like screen. */
31
- openHtop?: boolean;
32
- /** Request sudo password challenge flow. */
33
- sudoChallenge?: SudoChallenge;
34
- /** Request a generic password challenge (adduser, passwd). */
35
- passwordChallenge?: PasswordChallenge;
36
- }
37
-
38
- /** Deferred sudo challenge metadata returned by sudo command. */
39
- export interface SudoChallenge {
40
- /** User currently requesting elevation. */
41
- username: string;
42
- /** Target identity for elevated command. */
43
- targetUser: string;
44
- /** Command to execute after successful challenge; null for login shell. */
45
- commandLine: string | null;
46
- /** True when challenge targets interactive login shell. */
47
- loginShell: boolean;
48
- /** Prompt text shown before password input. */
49
- prompt: string;
50
- /**
51
- * Challenge mode.
52
- * - `"sudo"` (default): verify `username`'s password, then run `commandLine`.
53
- * - `"passwd"`: multi-step new-password flow; `onPassword` handles each step.
54
- * - `"confirm"`: text confirmation flow (e.g. deluser); `onPassword` receives typed text.
55
- */
56
- mode?: "sudo" | "passwd" | "confirm";
57
- /**
58
- * Optional async handler called when the user submits input.
59
- * Receives the typed text and the shell instance.
60
- * Returns a `CommandResult` written to the terminal, or `null` to show
61
- * another prompt (pass `nextPrompt` to change the prompt text).
62
- */
63
- onPassword?: (input: string, shell: VirtualShell) => Promise<{
64
- result: CommandResult | null;
65
- nextPrompt?: string;
66
- }>;
67
- }
68
-
69
- /** Generic password challenge — used by adduser, passwd, deluser. */
70
- export interface PasswordChallenge {
71
- /** Lines to print before the first prompt. */
72
- preamble?: string;
73
- /** Primary prompt text (e.g. "New password: "). */
74
- prompt: string;
75
- /** If set, a second prompt is shown for confirmation. */
76
- confirmPrompt?: string;
77
- /** Prompt shown for a destructive confirmation (y/N). */
78
- confirmText?: string;
79
- /** Tag identifying what to do with the entered value. */
80
- action: "adduser" | "passwd" | "deluser" | "su";
81
- /** Username targeted by the action. */
82
- targetUsername: string;
83
- /** For adduser: the new user's username (already validated). */
84
- newUsername?: string;
85
- }
86
-
87
- /** State payload used by nano command interactive editor flow. */
88
- export interface NanoEditorSession {
89
- /** Final destination path to write when save succeeds. */
90
- targetPath: string;
91
- /** Temporary scratch path used while editing. */
92
- tempPath: string;
93
- /** Initial editor content shown to user. */
94
- initialContent: string;
95
- }
96
-
97
- /** Per-session shell environment (variables, last exit code). */
98
- export interface ShellEnv {
99
- /** Environment variables visible to commands. */
100
- vars: Record<string, string>;
101
- /** Exit status of the last executed command. */
102
- lastExitCode: number;
103
- }
104
-
105
- /** Runtime context object passed to each command module. */
106
- export interface CommandContext {
107
- /** Authenticated user currently bound to stream. */
108
- authUser: string;
109
- /** Virtual hostname shown in prompt and banners. */
110
- hostname: string;
111
- /** Snapshot of currently active user sessions. */
112
- activeSessions: VirtualActiveSession[];
113
- /** Original unparsed command line input. */
114
- rawInput: string;
115
- /** Invocation mode (interactive shell or direct exec). */
116
- mode: CommandMode;
117
- /** Tokenized arguments excluding command name. */
118
- args: string[];
119
- /** Virtual shell instance. */
120
- shell: VirtualShell;
121
- /** Optional stdin payload (used by pipes/redirections). */
122
- stdin?: string;
123
- /** Current working directory for command execution. */
124
- cwd: string;
125
- /** Per-session environment available to command modules. */
126
- env: ShellEnv;
127
- }
128
-
129
- /** Contract implemented by each shell command module. */
130
- export interface ShellModule {
131
- /** Primary command name used in CLI. */
132
- name: string;
133
- /** Parameter help snippets displayed by help command. */
134
- params: string[];
135
- /** Command handler implementation. */
136
- run: (ctx: CommandContext) => CommandResult | Promise<CommandResult>;
137
- /** Optional alternative command names. */
138
- aliases?: string[];
139
- /** Short description shown in `help`. */
140
- description?: string;
141
- /** Category used for grouped help output. */
142
- category?: string;
143
- }
144
-
145
- /** Command return union allowing sync or async handlers. */
146
- export type CommandOutcome = CommandResult | Promise<CommandResult>;
@@ -1,52 +0,0 @@
1
- /** Represents a single command in a pipeline. */
2
- export interface PipelineCommand {
3
- /** Command name */
4
- name: string;
5
- /** Command arguments */
6
- args: string[];
7
- /** Input redirection file path (< file) */
8
- inputFile?: string;
9
- /** Output redirection file path (> file) */
10
- outputFile?: string;
11
- /** Append to output file (>> file) */
12
- appendOutput?: boolean;
13
- /** Stderr redirection file path (2> file) */
14
- stderrFile?: string;
15
- /** Append stderr to file (2>> file) */
16
- stderrAppend?: boolean;
17
- /** Redirect stderr to stdout (2>&1) */
18
- stderrToStdout?: boolean;
19
- }
20
-
21
- /** Logical operator connecting two statement groups. */
22
- export type LogicalOp = "&&" | "||" | ";";
23
-
24
- /** Represents a parsed shell pipeline */
25
- export interface Pipeline {
26
- /** List of commands in the pipeline */
27
- commands: PipelineCommand[];
28
- /** Whether this is a valid pipeline */
29
- isValid: boolean;
30
- /** Error message if parsing failed */
31
- error?: string;
32
- }
33
-
34
- /** A statement: one pipeline optionally followed by && / || / ; and the next statement */
35
- export interface Statement {
36
- /** Pipeline to execute for this statement. */
37
- pipeline: Pipeline;
38
- /** Operator connecting this statement to the next one. */
39
- op?: LogicalOp;
40
- /** Optional next statement in sequence. */
41
- next?: Statement;
42
- }
43
-
44
- /** Top-level parse result for a script. */
45
- export interface Script {
46
- /** Statements contained in the script. */
47
- statements: Statement[];
48
- /** Whether the script was parsed successfully. */
49
- isValid: boolean;
50
- /** Optional parse error message. */
51
- error?: string;
52
- }
@@ -1,32 +0,0 @@
1
- /**
2
- * Minimal stream contract used by exec command handlers.
3
- */
4
- export interface ExecStream {
5
- /** Writes text to stdout channel. */
6
- write(data: string): void;
7
- /** Signals output completion. */
8
- end(): void;
9
- /** Sets process-like exit code for exec response. */
10
- exit(code: number): void;
11
- /** Writable stderr channel. */
12
- stderr: {
13
- /** Writes text to stderr channel. */
14
- write(data: string): void;
15
- };
16
- }
17
-
18
- /**
19
- * Minimal interactive stream contract used by shell mode.
20
- */
21
- export interface ShellStream {
22
- /** Writes text to shell output channel. */
23
- write(data: string): void;
24
- /** Sets shell exit code on close. */
25
- exit(code: number): void;
26
- /** Ends shell stream. */
27
- end(): void;
28
- /** Subscribes to incoming user input chunks. */
29
- on(event: "data", listener: (chunk: Buffer) => void): void;
30
- /** Subscribes to stream close event. */
31
- on(event: "close", listener: () => void): void;
32
- }
@@ -1,38 +0,0 @@
1
- declare module "tar-stream" {
2
- export interface TarStreamEntryHeader {
3
- name: string;
4
- mode?: number;
5
- size?: number;
6
- mtime?: Date;
7
- }
8
-
9
- export interface TarStreamPack {
10
- entry(
11
- header: TarStreamEntryHeader,
12
- data: string | Buffer,
13
- callback?: (error?: Error | null) => void,
14
- ): void;
15
- finalize(): void;
16
- destroy?(error?: Error): void;
17
- on(event: "data", listener: (chunk: Buffer) => void): this;
18
- on(event: "end", listener: () => void): this;
19
- on(event: "error", listener: (error: Error) => void): this;
20
- }
21
-
22
- export interface TarStreamExtract {
23
- on(
24
- event: "entry",
25
- listener: (
26
- header: TarStreamEntryHeader,
27
- stream: NodeJS.ReadableStream,
28
- next: () => void,
29
- ) => void,
30
- ): this;
31
- on(event: "finish", listener: () => void): this;
32
- on(event: "error", listener: (error: Error) => void): this;
33
- end(buffer: Buffer): void;
34
- }
35
-
36
- export function pack(): TarStreamPack;
37
- export function extract(): TarStreamExtract;
38
- }
package/src/types/vfs.ts DELETED
@@ -1,98 +0,0 @@
1
- /** Supported virtual node kinds. */
2
- export type VfsNodeType = "file" | "directory";
3
-
4
- /** Shared metadata fields available on file and directory stats. */
5
- export interface VfsBaseNode {
6
- /** Node name without parent path. */
7
- name: string;
8
- /** Absolute normalized node path. */
9
- path: string;
10
- /** POSIX-like mode bits. */
11
- mode: number;
12
- /** Node creation timestamp. */
13
- createdAt: Date;
14
- /** Last update timestamp. */
15
- updatedAt: Date;
16
- }
17
-
18
- /** Stat shape returned for file nodes. */
19
- export interface VfsFileNode extends VfsBaseNode {
20
- type: "file";
21
- /** True when file content stored as gzip bytes. */
22
- compressed: boolean;
23
- /** Stored byte length (compressed when compressed=true). */
24
- size: number;
25
- }
26
-
27
- /** Stat shape returned for directory nodes. */
28
- export interface VfsDirectoryNode extends VfsBaseNode {
29
- type: "directory";
30
- /** Number of direct children in directory. */
31
- childrenCount: number;
32
- }
33
-
34
- /** Union of file and directory stat responses. */
35
- export type VfsNodeStats = VfsFileNode | VfsDirectoryNode;
36
-
37
- /** Optional behavior flags for writeFile operations. */
38
- export interface WriteFileOptions {
39
- /** POSIX-like mode to apply on create or overwrite. */
40
- mode?: number;
41
- /** Store content compressed with gzip. */
42
- compress?: boolean;
43
- }
44
-
45
- /** Optional behavior flags for remove operations. */
46
- export interface RemoveOptions {
47
- /** Allow deleting non-empty directory trees. */
48
- recursive?: boolean;
49
- }
50
-
51
- /** Base snapshot node schema used for archive serialization. */
52
- export interface VfsSnapshotBaseNode {
53
- name: string;
54
- mode: number;
55
- /** ISO-8601 creation timestamp. */
56
- createdAt: string;
57
- /** ISO-8601 update timestamp. */
58
- updatedAt: string;
59
- }
60
-
61
- /** Serialized snapshot shape for file nodes. */
62
- export interface VfsSnapshotFileNode extends VfsSnapshotBaseNode {
63
- type: "file";
64
- compressed: boolean;
65
- /** Base64-encoded raw file bytes. */
66
- contentBase64: string;
67
- }
68
-
69
- /** Serialized snapshot shape for directory nodes. */
70
- export interface VfsSnapshotDirectoryNode extends VfsSnapshotBaseNode {
71
- type: "directory";
72
- children: VfsSnapshotNode[];
73
- }
74
-
75
- /** Union of serialized snapshot node variants. */
76
- export type VfsSnapshotNode = VfsSnapshotFileNode | VfsSnapshotDirectoryNode;
77
-
78
- /** Top-level serialized filesystem snapshot. */
79
- export interface VfsSnapshot {
80
- root: VfsSnapshotDirectoryNode;
81
- }
82
-
83
- /** Options for mounting a host directory into the VFS. */
84
- export interface MountOptions {
85
- /** Absolute path inside the VM (e.g. `"/app"`). */
86
- vPath: string;
87
- /** Path on the host filesystem. Relative paths resolved from `process.cwd()`. */
88
- hostPath: string;
89
- /** When `true` (default), write operations inside the mount throw `EROFS`. */
90
- readOnly?: boolean;
91
- }
92
-
93
- /** Describes an active mount point. */
94
- export interface MountPoint {
95
- vPath: string;
96
- hostPath: string;
97
- readOnly: boolean;
98
- }