typescript-virtual-container 1.4.7 → 1.4.8

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 (120) hide show
  1. package/README.md +0 -1
  2. package/benchmark-results.txt +21 -21
  3. package/builds/self-standalone.js +979 -167
  4. package/builds/self-standalone.js.map +4 -4
  5. package/builds/standalone-wo-sftp.js +982 -172
  6. package/builds/standalone-wo-sftp.js.map +4 -4
  7. package/builds/standalone.cjs +990 -179
  8. package/builds/standalone.cjs.map +4 -4
  9. package/dist/SSHMimic/index.d.ts.map +1 -1
  10. package/dist/SSHMimic/index.js +2 -0
  11. package/dist/SSHMimic/index.js.map +1 -1
  12. package/dist/VirtualFileSystem/binaryPack.d.ts.map +1 -1
  13. package/dist/VirtualFileSystem/binaryPack.js +21 -9
  14. package/dist/VirtualFileSystem/binaryPack.js.map +1 -1
  15. package/dist/VirtualFileSystem/index.d.ts +25 -0
  16. package/dist/VirtualFileSystem/index.d.ts.map +1 -1
  17. package/dist/VirtualFileSystem/index.js +152 -47
  18. package/dist/VirtualFileSystem/index.js.map +1 -1
  19. package/dist/VirtualFileSystem/internalTypes.d.ts +19 -4
  20. package/dist/VirtualFileSystem/internalTypes.d.ts.map +1 -1
  21. package/dist/VirtualFileSystem/path.js +1 -1
  22. package/dist/VirtualFileSystem/path.js.map +1 -1
  23. package/dist/VirtualShell/idleManager.d.ts +65 -0
  24. package/dist/VirtualShell/idleManager.d.ts.map +1 -0
  25. package/dist/VirtualShell/idleManager.js +106 -0
  26. package/dist/VirtualShell/idleManager.js.map +1 -0
  27. package/dist/VirtualShell/index.d.ts +28 -0
  28. package/dist/VirtualShell/index.d.ts.map +1 -1
  29. package/dist/VirtualShell/index.js +48 -0
  30. package/dist/VirtualShell/index.js.map +1 -1
  31. package/dist/commands/man.d.ts.map +1 -1
  32. package/dist/commands/man.js +5 -28
  33. package/dist/commands/man.js.map +1 -1
  34. package/dist/commands/manuals-bundle.d.ts +11 -0
  35. package/dist/commands/manuals-bundle.d.ts.map +1 -0
  36. package/dist/commands/manuals-bundle.js +898 -0
  37. package/dist/commands/manuals-bundle.js.map +1 -0
  38. package/dist/index.d.ts +2 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +1 -0
  41. package/dist/index.js.map +1 -1
  42. package/dist/modules/linuxRootfs.d.ts +8 -1
  43. package/dist/modules/linuxRootfs.d.ts.map +1 -1
  44. package/dist/modules/linuxRootfs.js +47 -14
  45. package/dist/modules/linuxRootfs.js.map +1 -1
  46. package/dist/self-standalone.js +15 -0
  47. package/dist/self-standalone.js.map +1 -1
  48. package/dist/standalone.js +22 -0
  49. package/dist/standalone.js.map +1 -1
  50. package/docs/assets/hierarchy.js +1 -1
  51. package/docs/assets/navigation.js +1 -1
  52. package/docs/assets/search.js +1 -1
  53. package/docs/classes/HoneyPot.html +8 -8
  54. package/docs/classes/IdleManager.html +159 -0
  55. package/docs/classes/SshClient.html +18 -18
  56. package/docs/classes/VirtualFileSystem.html +57 -32
  57. package/docs/classes/VirtualPackageManager.html +12 -12
  58. package/docs/classes/VirtualSftpServer.html +3 -3
  59. package/docs/classes/VirtualShell.html +40 -25
  60. package/docs/classes/VirtualSshServer.html +5 -5
  61. package/docs/classes/VirtualUserManager.html +26 -26
  62. package/docs/functions/assertDiff.html +1 -1
  63. package/docs/functions/diffSnapshots.html +1 -1
  64. package/docs/functions/formatDiff.html +1 -1
  65. package/docs/functions/getArg.html +1 -1
  66. package/docs/functions/getFlag.html +1 -1
  67. package/docs/functions/ifFlag.html +1 -1
  68. package/docs/hierarchy.html +1 -1
  69. package/docs/index.html +1 -2
  70. package/docs/interfaces/AuditLogEntry.html +2 -2
  71. package/docs/interfaces/CommandContext.html +11 -11
  72. package/docs/interfaces/CommandResult.html +12 -12
  73. package/docs/interfaces/ExecStream.html +5 -5
  74. package/docs/interfaces/HoneyPotStats.html +2 -2
  75. package/docs/interfaces/IdleManagerOptions.html +7 -0
  76. package/docs/interfaces/InstalledPackage.html +10 -10
  77. package/docs/interfaces/NanoEditorSession.html +4 -4
  78. package/docs/interfaces/PackageDefinition.html +13 -13
  79. package/docs/interfaces/PackageFile.html +4 -4
  80. package/docs/interfaces/RemoveOptions.html +2 -2
  81. package/docs/interfaces/ShellEnv.html +3 -3
  82. package/docs/interfaces/ShellModule.html +7 -7
  83. package/docs/interfaces/ShellProperties.html +4 -4
  84. package/docs/interfaces/ShellStream.html +6 -6
  85. package/docs/interfaces/SudoChallenge.html +8 -8
  86. package/docs/interfaces/VfsBaseNode.html +6 -6
  87. package/docs/interfaces/VfsDiff.html +5 -5
  88. package/docs/interfaces/VfsDiffEntry.html +3 -3
  89. package/docs/interfaces/VfsDiffModified.html +5 -5
  90. package/docs/interfaces/VfsDirectoryNode.html +7 -7
  91. package/docs/interfaces/VfsFileNode.html +8 -8
  92. package/docs/interfaces/VfsOptions.html +18 -4
  93. package/docs/interfaces/VfsSnapshot.html +2 -2
  94. package/docs/interfaces/VfsSnapshotBaseNode.html +3 -3
  95. package/docs/interfaces/VfsSnapshotDirectoryNode.html +4 -4
  96. package/docs/interfaces/VfsSnapshotFileNode.html +5 -5
  97. package/docs/interfaces/WriteFileOptions.html +3 -3
  98. package/docs/modules.html +1 -1
  99. package/docs/types/CommandMode.html +1 -1
  100. package/docs/types/CommandOutcome.html +1 -1
  101. package/docs/types/IdleState.html +1 -0
  102. package/docs/types/VfsNodeStats.html +1 -1
  103. package/docs/types/VfsNodeType.html +1 -1
  104. package/docs/types/VfsPersistenceMode.html +1 -1
  105. package/docs/types/VfsSnapshotNode.html +1 -1
  106. package/package.json +5 -4
  107. package/scripts/generate-manuals-bundle.mjs +49 -0
  108. package/src/SSHMimic/index.ts +2 -0
  109. package/src/VirtualFileSystem/binaryPack.ts +21 -9
  110. package/src/VirtualFileSystem/index.ts +151 -53
  111. package/src/VirtualFileSystem/internalTypes.ts +20 -4
  112. package/src/VirtualFileSystem/path.ts +1 -1
  113. package/src/VirtualShell/idleManager.ts +133 -0
  114. package/src/VirtualShell/index.ts +48 -0
  115. package/src/commands/man.ts +5 -37
  116. package/src/commands/manuals-bundle.ts +898 -0
  117. package/src/index.ts +2 -0
  118. package/src/modules/linuxRootfs.ts +58 -14
  119. package/src/self-standalone.ts +13 -0
  120. package/src/standalone.ts +23 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/SSHMimic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AA+B/C,cAAM,QAAS,SAAQ,YAAY;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,KAAK,CAAe;IAE5B,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqC;IAElE;;;;;;;;OAQG;gBACS,EACX,IAAI,EACJ,QAA0B,EAC1B,KAAkC,EAClC,eAAmB,EACnB,iBAA0B,GAC1B,EAAE;QACF,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,YAAY,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC3B;IAYD,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,aAAa;IAcrB;;;;OAIG;IACU,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IA0LrC;;OAEG;IACI,IAAI,IAAI,IAAI;IAUnB;;;OAGG;IACI,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;CAGrC;AAED,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/SSHMimic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AA+B/C,cAAM,QAAS,SAAQ,YAAY;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,KAAK,CAAe;IAE5B,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqC;IAElE;;;;;;;;OAQG;gBACS,EACX,IAAI,EACJ,QAA0B,EAC1B,KAAkC,EAClC,eAAmB,EACnB,iBAA0B,GAC1B,EAAE;QACF,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,YAAY,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC3B;IAYD,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,aAAa;IAcrB;;;;OAIG;IACU,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IA0LrC;;OAEG;IACI,IAAI,IAAI,IAAI;IAYnB;;;OAGG;IACI,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;CAGrC;AAED,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -230,6 +230,8 @@ class SshMimic extends EventEmitter {
230
230
  */
231
231
  stop() {
232
232
  perf.mark("stop");
233
+ // Flush pending WAL journal before closing
234
+ void this.shell.vfs.stopAutoFlush();
233
235
  if (this.server) {
234
236
  this.server.close(() => {
235
237
  devLog("SSH Mimic stopped");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/SSHMimic/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/SSHMimic/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"binaryPack.d.ts","sourceRoot":"","sources":["../../src/VirtualFileSystem/binaryPack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EACX,qBAAqB,EAGrB,MAAM,iBAAiB,CAAC;AA+EzB;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAM7D;AA0FD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAiB5D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErD"}
1
+ {"version":3,"file":"binaryPack.d.ts","sourceRoot":"","sources":["../../src/VirtualFileSystem/binaryPack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EACX,qBAAqB,EAIrB,MAAM,iBAAiB,CAAC;AAyFzB;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAM7D;AA2FD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAiB5D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErD"}
@@ -79,19 +79,30 @@ function encodeNode(enc, node) {
79
79
  enc.writeUint8(TYPE_FILE);
80
80
  enc.writeString(f.name);
81
81
  enc.writeUint32(f.mode);
82
- enc.writeFloat64(f.createdAt.getTime());
83
- enc.writeFloat64(f.updatedAt.getTime());
82
+ enc.writeFloat64(f.createdAt);
83
+ enc.writeFloat64(f.updatedAt);
84
84
  enc.writeUint8(f.compressed ? 0x01 : 0x00);
85
85
  enc.writeBytes(f.content);
86
86
  }
87
+ else if (node.type === "stub") {
88
+ // Encode stub as a regular uncompressed file node
89
+ const s = node;
90
+ enc.writeUint8(TYPE_FILE);
91
+ enc.writeString(s.name);
92
+ enc.writeUint32(s.mode);
93
+ enc.writeFloat64(s.createdAt);
94
+ enc.writeFloat64(s.updatedAt);
95
+ enc.writeUint8(0x00); // not compressed
96
+ enc.writeBytes(Buffer.from(s.stubContent, "utf8"));
97
+ }
87
98
  else {
88
99
  const d = node;
89
100
  enc.writeUint8(TYPE_DIR);
90
101
  enc.writeString(d.name);
91
102
  enc.writeUint32(d.mode);
92
- enc.writeFloat64(d.createdAt.getTime());
93
- enc.writeFloat64(d.updatedAt.getTime());
94
- const children = Array.from(d.children.values());
103
+ enc.writeFloat64(d.createdAt);
104
+ enc.writeFloat64(d.updatedAt);
105
+ const children = Object.values(d.children);
95
106
  enc.writeUint32(children.length);
96
107
  for (const child of children)
97
108
  encodeNode(enc, child);
@@ -153,8 +164,8 @@ function decodeNode(dec) {
153
164
  const type = dec.readUint8();
154
165
  const name = dec.readString();
155
166
  const mode = dec.readUint32();
156
- const createdAt = new Date(dec.readFloat64());
157
- const updatedAt = new Date(dec.readFloat64());
167
+ const createdAt = dec.readFloat64();
168
+ const updatedAt = dec.readFloat64();
158
169
  if (type === TYPE_FILE) {
159
170
  const compressed = dec.readUint8() === 0x01;
160
171
  const content = dec.readBytes();
@@ -170,10 +181,10 @@ function decodeNode(dec) {
170
181
  }
171
182
  if (type === TYPE_DIR) {
172
183
  const count = dec.readUint32();
173
- const children = new Map();
184
+ const children = Object.create(null);
174
185
  for (let i = 0; i < count; i++) {
175
186
  const child = decodeNode(dec);
176
- children.set(child.name, child);
187
+ children[child.name] = child;
177
188
  }
178
189
  return {
179
190
  type: "directory",
@@ -182,6 +193,7 @@ function decodeNode(dec) {
182
193
  createdAt,
183
194
  updatedAt,
184
195
  children,
196
+ _childCount: count,
185
197
  };
186
198
  }
187
199
  throw new Error(`[VFS binary] Unknown node type: 0x${type.toString(16)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"binaryPack.js","sourceRoot":"","sources":["../../src/VirtualFileSystem/binaryPack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binaryPack.js","sourceRoot":"","sources":["../../src/VirtualFileSystem/binaryPack.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /** biome-ignore-all lint/style/useNamingConvention: NW ? */
2
2
  import { EventEmitter } from "node:events";
3
3
  import type { RemoveOptions, VfsNodeStats, VfsSnapshot, WriteFileOptions } from "../types/vfs";
4
+ import type { InternalDirectoryNode } from "./internalTypes";
4
5
  /**
5
6
  * "memory" — pure in-memory, no disk I/O (default).
6
7
  *
@@ -90,6 +91,14 @@ declare class VirtualFileSystem extends EventEmitter {
90
91
  constructor(options?: VfsOptions);
91
92
  private makeDir;
92
93
  private makeFile;
94
+ private makeStub;
95
+ /**
96
+ * Write a lazy stub — stores content as a plain string with no Buffer allocation.
97
+ * Use for static rootfs files that may never be read. On first `writeFile()`,
98
+ * the stub is promoted to a real `InternalFileNode`.
99
+ * Parent directories are created when missing.
100
+ */
101
+ writeStub(targetPath: string, content: string, mode?: number): void;
93
102
  private mkdirRecursive;
94
103
  /**
95
104
  * In `"fs"` mode: reads the binary snapshot (`vfs-snapshot.vfsb`) from disk.
@@ -129,6 +138,22 @@ declare class VirtualFileSystem extends EventEmitter {
129
138
  * ```
130
139
  */
131
140
  stopAutoFlush(): Promise<void>;
141
+ /**
142
+ * Replace the entire root tree — used internally by `bootstrapLinuxRootfs`
143
+ * to hot-swap the static rootfs snapshot without going through importSnapshot
144
+ * (which would re-journal every node in fs mode).
145
+ * @internal
146
+ */
147
+ importRootTree(root: InternalDirectoryNode): void;
148
+ /** Serialise current tree to VFSB binary. Used for the static rootfs cache. */
149
+ encodeBinary(): Buffer;
150
+ /**
151
+ * Release the in-memory VFS tree, freeing all InternalNode objects for GC.
152
+ * The tree MUST be restored via `importRootTree()` before any VFS operation.
153
+ * Called by IdleManager when freezing an idle shell.
154
+ * @internal
155
+ */
156
+ releaseTree(): void;
132
157
  /** Set to true during journal replay to suppress re-journaling. */
133
158
  private _replayMode;
134
159
  /** Append a journal entry if in fs mode and not replaying. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/VirtualFileSystem/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/VirtualFileSystem/index.ts"],"names":[],"mappings":"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"}
@@ -83,18 +83,19 @@ class VirtualFileSystem extends EventEmitter {
83
83
  }
84
84
  // ── Internal helpers ──────────────────────────────────────────────────────
85
85
  makeDir(name, mode) {
86
- const now = new Date();
86
+ const now = Date.now();
87
87
  return {
88
88
  type: "directory",
89
89
  name,
90
90
  mode,
91
91
  createdAt: now,
92
92
  updatedAt: now,
93
- children: new Map(),
93
+ children: Object.create(null),
94
+ _childCount: 0,
94
95
  };
95
96
  }
96
97
  makeFile(name, content, mode, compressed) {
97
- const now = new Date();
98
+ const now = Date.now();
98
99
  return {
99
100
  type: "file",
100
101
  name,
@@ -105,6 +106,30 @@ class VirtualFileSystem extends EventEmitter {
105
106
  updatedAt: now,
106
107
  };
107
108
  }
109
+ makeStub(name, content, mode) {
110
+ const now = Date.now();
111
+ return { type: "stub", name, stubContent: content, mode, createdAt: now, updatedAt: now };
112
+ }
113
+ /**
114
+ * Write a lazy stub — stores content as a plain string with no Buffer allocation.
115
+ * Use for static rootfs files that may never be read. On first `writeFile()`,
116
+ * the stub is promoted to a real `InternalFileNode`.
117
+ * Parent directories are created when missing.
118
+ */
119
+ writeStub(targetPath, content, mode = 0o644) {
120
+ const normalized = normalizePath(targetPath);
121
+ const { parent, name } = getParentDirectory(this.root, normalized, true, (p) => this.mkdirRecursive(p, 0o755));
122
+ const existing = parent.children[name];
123
+ if (existing?.type === "directory") {
124
+ throw new Error(`Cannot write stub '${normalized}': path is a directory.`);
125
+ }
126
+ // Don't overwrite a real file or an already-promoted node
127
+ if (existing?.type === "file")
128
+ return;
129
+ if (!existing)
130
+ parent._childCount++;
131
+ parent.children[name] = this.makeStub(name, content, mode);
132
+ }
108
133
  mkdirRecursive(targetPath, mode) {
109
134
  const normalized = normalizePath(targetPath);
110
135
  if (normalized === "/")
@@ -114,10 +139,11 @@ class VirtualFileSystem extends EventEmitter {
114
139
  let builtPath = "";
115
140
  for (const part of parts) {
116
141
  builtPath += `/${part}`;
117
- let child = current.children.get(part);
142
+ let child = current.children[part];
118
143
  if (!child) {
119
144
  child = this.makeDir(part, mode);
120
- current.children.set(part, child);
145
+ current.children[part] = child;
146
+ current._childCount++;
121
147
  this.emit("dir:create", { path: builtPath, mode });
122
148
  this._journal({ op: JournalOp.MKDIR, path: builtPath, mode });
123
149
  }
@@ -245,7 +271,36 @@ class VirtualFileSystem extends EventEmitter {
245
271
  if (this._dirty)
246
272
  await this.flushMirror();
247
273
  }
248
- // ── WAL Journal helpers ───────────────────────────────────────────────────
274
+ /**
275
+ * Replace the entire root tree — used internally by `bootstrapLinuxRootfs`
276
+ * to hot-swap the static rootfs snapshot without going through importSnapshot
277
+ * (which would re-journal every node in fs mode).
278
+ * @internal
279
+ */
280
+ importRootTree(root) {
281
+ const prev = this._replayMode;
282
+ this._replayMode = true;
283
+ try {
284
+ this.root = root;
285
+ }
286
+ finally {
287
+ this._replayMode = prev;
288
+ }
289
+ }
290
+ /** Serialise current tree to VFSB binary. Used for the static rootfs cache. */
291
+ encodeBinary() {
292
+ return encodeVfs(this.root);
293
+ }
294
+ /**
295
+ * Release the in-memory VFS tree, freeing all InternalNode objects for GC.
296
+ * The tree MUST be restored via `importRootTree()` before any VFS operation.
297
+ * Called by IdleManager when freezing an idle shell.
298
+ * @internal
299
+ */
300
+ releaseTree() {
301
+ // Replace root with a minimal stub — keeps the object alive but frees all children
302
+ this.root = this.makeDir("", 0o755);
303
+ }
249
304
  /** Set to true during journal replay to suppress re-journaling. */
250
305
  _replayMode = false;
251
306
  /** Append a journal entry if in fs mode and not replaying. */
@@ -305,11 +360,11 @@ class VirtualFileSystem extends EventEmitter {
305
360
  this._evictDir(this.root);
306
361
  }
307
362
  _evictDir(dir) {
308
- for (const node of dir.children.values()) {
363
+ for (const node of Object.values(dir.children)) {
309
364
  if (node.type === "directory") {
310
365
  this._evictDir(node);
311
366
  }
312
- else if (!node.evicted) {
367
+ else if (node.type === "file" && !node.evicted) {
313
368
  const rawSize = node.compressed
314
369
  ? (node.size ?? node.content.length * 2) // estimate uncompressed
315
370
  : node.content.length;
@@ -319,6 +374,7 @@ class VirtualFileSystem extends EventEmitter {
319
374
  node.evicted = true;
320
375
  }
321
376
  }
377
+ // stubs: nothing to evict — content is already a plain string, not a Buffer
322
378
  }
323
379
  }
324
380
  /**
@@ -339,7 +395,7 @@ class VirtualFileSystem extends EventEmitter {
339
395
  for (const part of parts) {
340
396
  if (cur.type !== "directory")
341
397
  return;
342
- const next = cur.children.get(part);
398
+ const next = cur.children[part];
343
399
  if (!next)
344
400
  return;
345
401
  cur = next;
@@ -461,7 +517,7 @@ class VirtualFileSystem extends EventEmitter {
461
517
  }
462
518
  const normalized = normalizePath(targetPath);
463
519
  const { parent, name } = getParentDirectory(this.root, normalized, true, (p) => this.mkdirRecursive(p, 0o755));
464
- const existing = parent.children.get(name);
520
+ const existing = parent.children[name];
465
521
  if (existing?.type === "directory") {
466
522
  throw new Error(`Cannot write file '${normalized}': path is a directory.`);
467
523
  }
@@ -471,15 +527,19 @@ class VirtualFileSystem extends EventEmitter {
471
527
  const shouldCompress = options.compress ?? false;
472
528
  const storedContent = shouldCompress ? gzipSync(rawContent) : rawContent;
473
529
  const mode = options.mode ?? 0o644;
474
- if (existing) {
530
+ if (existing && existing.type === "file") {
531
+ // Update real file in place
475
532
  const f = existing;
476
533
  f.content = storedContent;
477
534
  f.compressed = shouldCompress;
478
535
  f.mode = mode;
479
- f.updatedAt = new Date();
536
+ f.updatedAt = Date.now();
480
537
  }
481
538
  else {
482
- parent.children.set(name, this.makeFile(name, storedContent, mode, shouldCompress));
539
+ // Create new real file — also promotes stubs (no _childCount change for stubs)
540
+ if (!existing)
541
+ parent._childCount++;
542
+ parent.children[name] = this.makeFile(name, storedContent, mode, shouldCompress);
483
543
  }
484
544
  this.emit("file:write", { path: normalized, size: storedContent.length });
485
545
  this._journal({ op: JournalOp.WRITE, path: normalized, content: rawContent, mode });
@@ -497,6 +557,10 @@ class VirtualFileSystem extends EventEmitter {
497
557
  }
498
558
  const normalized = normalizePath(targetPath);
499
559
  const node = getNode(this.root, normalized);
560
+ if (node.type === "stub") {
561
+ this.emit("file:read", { path: normalized, size: node.stubContent.length });
562
+ return node.stubContent;
563
+ }
500
564
  if (node.type !== "file") {
501
565
  throw new Error(`Cannot read '${targetPath}': not a file.`);
502
566
  }
@@ -517,6 +581,11 @@ class VirtualFileSystem extends EventEmitter {
517
581
  }
518
582
  const normalized = normalizePath(targetPath);
519
583
  const node = getNode(this.root, normalized);
584
+ if (node.type === "stub") {
585
+ const buf = Buffer.from(node.stubContent, "utf8");
586
+ this.emit("file:read", { path: normalized, size: buf.length });
587
+ return buf;
588
+ }
520
589
  if (node.type !== "file") {
521
590
  throw new Error(`Cannot read '${targetPath}': not a file.`);
522
591
  }
@@ -580,6 +649,19 @@ class VirtualFileSystem extends EventEmitter {
580
649
  const normalized = normalizePath(targetPath);
581
650
  const node = getNode(this.root, normalized);
582
651
  const name = normalized === "/" ? "" : path.posix.basename(normalized);
652
+ if (node.type === "stub") {
653
+ const s = node;
654
+ return {
655
+ type: "file",
656
+ name,
657
+ path: normalized,
658
+ mode: s.mode,
659
+ createdAt: new Date(s.createdAt),
660
+ updatedAt: new Date(s.updatedAt),
661
+ compressed: false,
662
+ size: s.stubContent.length,
663
+ };
664
+ }
583
665
  if (node.type === "file") {
584
666
  const f = node;
585
667
  return {
@@ -587,8 +669,8 @@ class VirtualFileSystem extends EventEmitter {
587
669
  name,
588
670
  path: normalized,
589
671
  mode: f.mode,
590
- createdAt: f.createdAt,
591
- updatedAt: f.updatedAt,
672
+ createdAt: new Date(f.createdAt),
673
+ updatedAt: new Date(f.updatedAt),
592
674
  compressed: f.compressed,
593
675
  size: f.evicted ? (f.size ?? 0) : f.content.length,
594
676
  };
@@ -599,9 +681,9 @@ class VirtualFileSystem extends EventEmitter {
599
681
  name,
600
682
  path: normalized,
601
683
  mode: d.mode,
602
- createdAt: d.createdAt,
603
- updatedAt: d.updatedAt,
604
- childrenCount: d.children.size,
684
+ createdAt: new Date(d.createdAt),
685
+ updatedAt: new Date(d.updatedAt),
686
+ childrenCount: d._childCount,
605
687
  };
606
688
  }
607
689
  /** Lists direct children names of a directory (sorted). */
@@ -622,7 +704,7 @@ class VirtualFileSystem extends EventEmitter {
622
704
  if (node.type !== "directory") {
623
705
  throw new Error(`Cannot list '${dirPath}': not a directory.`);
624
706
  }
625
- return Array.from(node.children.keys()).sort();
707
+ return Object.keys(node.children).sort();
626
708
  }
627
709
  /** Renders ASCII tree view of a directory hierarchy. */
628
710
  tree(dirPath = "/") {
@@ -636,10 +718,10 @@ class VirtualFileSystem extends EventEmitter {
636
718
  }
637
719
  renderTreeLines(dir, label) {
638
720
  const lines = [label];
639
- const entries = Array.from(dir.children.keys()).sort();
721
+ const entries = Object.keys(dir.children).sort();
640
722
  for (let i = 0; i < entries.length; i++) {
641
723
  const name = entries[i];
642
- const child = dir.children.get(name);
724
+ const child = dir.children[name];
643
725
  const isLast = i === entries.length - 1;
644
726
  const connector = isLast ? "└── " : "├── ";
645
727
  const nextPrefix = isLast ? " " : "│ ";
@@ -661,8 +743,10 @@ class VirtualFileSystem extends EventEmitter {
661
743
  computeUsage(node) {
662
744
  if (node.type === "file")
663
745
  return node.content.length;
746
+ if (node.type === "stub")
747
+ return node.stubContent.length;
664
748
  let total = 0;
665
- for (const child of node.children.values()) {
749
+ for (const child of Object.values(node.children)) {
666
750
  total += this.computeUsage(child);
667
751
  }
668
752
  return total;
@@ -676,7 +760,7 @@ class VirtualFileSystem extends EventEmitter {
676
760
  if (!f.compressed) {
677
761
  f.content = gzipSync(f.content);
678
762
  f.compressed = true;
679
- f.updatedAt = new Date();
763
+ f.updatedAt = Date.now();
680
764
  }
681
765
  }
682
766
  /** Decompresses a gzip-compressed file in place. */
@@ -688,7 +772,7 @@ class VirtualFileSystem extends EventEmitter {
688
772
  if (f.compressed) {
689
773
  f.content = gunzipSync(f.content);
690
774
  f.compressed = false;
691
- f.updatedAt = new Date();
775
+ f.updatedAt = Date.now();
692
776
  }
693
777
  }
694
778
  /**
@@ -707,10 +791,11 @@ class VirtualFileSystem extends EventEmitter {
707
791
  content: Buffer.from(normalizedTarget, "utf8"),
708
792
  mode: 0o120777,
709
793
  compressed: false,
710
- createdAt: new Date(),
711
- updatedAt: new Date(),
794
+ createdAt: Date.now(),
795
+ updatedAt: Date.now(),
712
796
  };
713
- parent.children.set(name, symNode);
797
+ parent.children[name] = symNode;
798
+ parent._childCount++;
714
799
  // Journal before emit
715
800
  this._journal({ op: JournalOp.SYMLINK, path: normalizedLink, dest: normalizedTarget });
716
801
  this.emit("symlink:create", {
@@ -775,12 +860,13 @@ class VirtualFileSystem extends EventEmitter {
775
860
  const node = getNode(this.root, normalized);
776
861
  if (node.type === "directory") {
777
862
  const dir = node;
778
- if (!options.recursive && dir.children.size > 0) {
863
+ if (!options.recursive && dir._childCount > 0) {
779
864
  throw new Error(`Directory '${normalized}' is not empty. Use recursive option.`);
780
865
  }
781
866
  }
782
867
  const { parent, name } = getParentDirectory(this.root, normalized, false, () => { });
783
- parent.children.delete(name);
868
+ delete parent.children[name];
869
+ parent._childCount--;
784
870
  this.emit("node:remove", { path: normalized });
785
871
  this._journal({ op: JournalOp.REMOVE, path: normalized });
786
872
  }
@@ -798,9 +884,11 @@ class VirtualFileSystem extends EventEmitter {
798
884
  this.mkdirRecursive(path.posix.dirname(toNormalized), 0o755);
799
885
  const { parent: destParent, name: destName } = getParentDirectory(this.root, toNormalized, false, () => { });
800
886
  const { parent: srcParent, name: srcName } = getParentDirectory(this.root, fromNormalized, false, () => { });
801
- srcParent.children.delete(srcName);
887
+ delete srcParent.children[srcName];
888
+ srcParent._childCount--;
802
889
  node.name = destName;
803
- destParent.children.set(destName, node);
890
+ destParent.children[destName] = node;
891
+ destParent._childCount++;
804
892
  this._journal({ op: JournalOp.MOVE, path: fromNormalized, dest: toNormalized });
805
893
  }
806
894
  // ── Snapshot serialisation ─────────────────────────────────────────────────
@@ -815,17 +903,32 @@ class VirtualFileSystem extends EventEmitter {
815
903
  }
816
904
  serializeDir(dir) {
817
905
  const children = [];
818
- for (const child of dir.children.values()) {
819
- children.push(child.type === "file"
820
- ? this.serializeFile(child)
821
- : this.serializeDir(child));
906
+ for (const child of Object.values(dir.children)) {
907
+ if (child.type === "stub") {
908
+ // Serialize stub as a regular file node
909
+ children.push({
910
+ type: "file",
911
+ name: child.name,
912
+ mode: child.mode,
913
+ createdAt: new Date(child.createdAt).toISOString(),
914
+ updatedAt: new Date(child.updatedAt).toISOString(),
915
+ compressed: false,
916
+ contentBase64: Buffer.from(child.stubContent, "utf8").toString("base64"),
917
+ });
918
+ }
919
+ else if (child.type === "file") {
920
+ children.push(this.serializeFile(child));
921
+ }
922
+ else {
923
+ children.push(this.serializeDir(child));
924
+ }
822
925
  }
823
926
  return {
824
927
  type: "directory",
825
928
  name: dir.name,
826
929
  mode: dir.mode,
827
- createdAt: dir.createdAt.toISOString(),
828
- updatedAt: dir.updatedAt.toISOString(),
930
+ createdAt: new Date(dir.createdAt).toISOString(),
931
+ updatedAt: new Date(dir.updatedAt).toISOString(),
829
932
  children,
830
933
  };
831
934
  }
@@ -834,8 +937,8 @@ class VirtualFileSystem extends EventEmitter {
834
937
  type: "file",
835
938
  name: file.name,
836
939
  mode: file.mode,
837
- createdAt: file.createdAt.toISOString(),
838
- updatedAt: file.updatedAt.toISOString(),
940
+ createdAt: new Date(file.createdAt).toISOString(),
941
+ updatedAt: new Date(file.updatedAt).toISOString(),
839
942
  compressed: file.compressed,
840
943
  contentBase64: file.content.toString("base64"),
841
944
  };
@@ -871,27 +974,29 @@ class VirtualFileSystem extends EventEmitter {
871
974
  type: "directory",
872
975
  name,
873
976
  mode: snap.mode,
874
- createdAt: new Date(snap.createdAt),
875
- updatedAt: new Date(snap.updatedAt),
876
- children: new Map(),
977
+ createdAt: Date.parse(snap.createdAt),
978
+ updatedAt: Date.parse(snap.updatedAt),
979
+ children: Object.create(null),
980
+ _childCount: 0,
877
981
  };
878
982
  for (const child of snap.children) {
879
983
  if (child.type === "file") {
880
984
  const f = child;
881
- dir.children.set(f.name, {
985
+ dir.children[f.name] = {
882
986
  type: "file",
883
987
  name: f.name,
884
988
  mode: f.mode,
885
- createdAt: new Date(f.createdAt),
886
- updatedAt: new Date(f.updatedAt),
989
+ createdAt: Date.parse(f.createdAt),
990
+ updatedAt: Date.parse(f.updatedAt),
887
991
  compressed: f.compressed,
888
992
  content: Buffer.from(f.contentBase64, "base64"),
889
- });
993
+ };
890
994
  }
891
995
  else {
892
996
  const sub = this.deserializeDir(child, child.name);
893
- dir.children.set(child.name, sub);
997
+ dir.children[child.name] = sub;
894
998
  }
999
+ dir._childCount++;
895
1000
  }
896
1001
  return dir;
897
1002
  }