@secure-exec/core 0.2.0-rc.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/generated/isolate-runtime.d.ts +1 -1
  2. package/dist/generated/isolate-runtime.js +1 -1
  3. package/dist/index.d.ts +17 -4
  4. package/dist/index.js +10 -2
  5. package/dist/isolate-runtime/require-setup.js +145 -7
  6. package/dist/kernel/device-backend.d.ts +14 -0
  7. package/dist/kernel/device-backend.js +251 -0
  8. package/dist/kernel/device-layer.js +9 -0
  9. package/dist/kernel/index.d.ts +4 -4
  10. package/dist/kernel/index.js +3 -3
  11. package/dist/kernel/kernel.js +141 -119
  12. package/dist/kernel/mount-table.d.ts +75 -0
  13. package/dist/kernel/mount-table.js +353 -0
  14. package/dist/kernel/permissions.d.ts +9 -0
  15. package/dist/kernel/permissions.js +33 -1
  16. package/dist/kernel/proc-backend.d.ts +30 -0
  17. package/dist/kernel/proc-backend.js +428 -0
  18. package/dist/kernel/proc-layer.js +6 -0
  19. package/dist/kernel/process-table.d.ts +3 -1
  20. package/dist/kernel/process-table.js +23 -3
  21. package/dist/kernel/pty.d.ts +3 -2
  22. package/dist/kernel/pty.js +13 -2
  23. package/dist/kernel/types.d.ts +45 -4
  24. package/dist/kernel/types.js +9 -0
  25. package/dist/kernel/vfs.d.ts +30 -2
  26. package/dist/kernel/vfs.js +19 -2
  27. package/dist/shared/api-types.d.ts +6 -0
  28. package/dist/shared/console-formatter.js +8 -8
  29. package/dist/shared/in-memory-fs.d.ts +14 -62
  30. package/dist/shared/in-memory-fs.js +101 -636
  31. package/dist/shared/permissions.js +5 -0
  32. package/dist/test/block-store-conformance.d.ts +34 -0
  33. package/dist/test/block-store-conformance.js +251 -0
  34. package/dist/test/metadata-store-conformance.d.ts +37 -0
  35. package/dist/test/metadata-store-conformance.js +646 -0
  36. package/dist/test/vfs-conformance.d.ts +65 -0
  37. package/dist/test/vfs-conformance.js +842 -0
  38. package/dist/types.d.ts +1 -0
  39. package/dist/vfs/chunked-vfs.d.ts +66 -0
  40. package/dist/vfs/chunked-vfs.js +1290 -0
  41. package/dist/vfs/host-block-store.d.ts +19 -0
  42. package/dist/vfs/host-block-store.js +97 -0
  43. package/dist/vfs/memory-block-store.d.ts +16 -0
  44. package/dist/vfs/memory-block-store.js +45 -0
  45. package/dist/vfs/memory-metadata.d.ts +75 -0
  46. package/dist/vfs/memory-metadata.js +528 -0
  47. package/dist/vfs/sqlite-metadata.d.ts +91 -0
  48. package/dist/vfs/sqlite-metadata.js +582 -0
  49. package/dist/vfs/types.d.ts +210 -0
  50. package/dist/vfs/types.js +8 -0
  51. package/package.json +20 -1
  52. package/dist/kernel/inode-table.d.ts +0 -43
  53. package/dist/kernel/inode-table.js +0 -85
package/dist/types.d.ts CHANGED
@@ -13,6 +13,7 @@ export interface CommandExecutor {
13
13
  spawn(command: string, args: string[], options: {
14
14
  cwd?: string;
15
15
  env?: Record<string, string>;
16
+ streamStdin?: boolean;
16
17
  onStdout?: (data: Uint8Array) => void;
17
18
  onStderr?: (data: Uint8Array) => void;
18
19
  }): SpawnedProcess;
@@ -0,0 +1,66 @@
1
+ /**
2
+ * ChunkedVFS: composes FsMetadataStore + FsBlockStore into a VirtualFileSystem.
3
+ *
4
+ * Tiered storage: files <= inlineThreshold are stored inline in metadata;
5
+ * larger files are split into fixed-size chunks in the block store.
6
+ * Per-inode async mutex prevents interleaved read-modify-write corruption.
7
+ *
8
+ * Optional write buffering: when enabled, pwrite buffers dirty chunks in
9
+ * memory and flushes to the block store on fsync or auto-flush. Reads
10
+ * always see buffered data. When disabled (default), writes go directly
11
+ * to the block store.
12
+ */
13
+ import type { VirtualFileSystem } from "../kernel/vfs.js";
14
+ import type { FsBlockStore, FsMetadataStore, RetentionPolicy, VersionInfo } from "./types.js";
15
+ /**
16
+ * Configuration for creating a ChunkedVFS instance via `createChunkedVfs()`.
17
+ *
18
+ * Requires a metadata store (directory tree, inodes) and a block store
19
+ * (key-value blob storage). Optional settings control tiered storage
20
+ * thresholds, write buffering, and versioning behavior.
21
+ */
22
+ export interface ChunkedVfsOptions {
23
+ metadata: FsMetadataStore;
24
+ blocks: FsBlockStore;
25
+ /** Chunk size in bytes. Default: 4 MB. */
26
+ chunkSize?: number;
27
+ /** Max file size for inline storage. Default: 64 KB. */
28
+ inlineThreshold?: number;
29
+ /**
30
+ * Enable write buffering. When true, pwrite buffers dirty chunks in
31
+ * memory and flushes to the block store on fsync or auto-flush.
32
+ * When false, every pwrite immediately writes to the block store.
33
+ * Default: false.
34
+ */
35
+ writeBuffering?: boolean;
36
+ /**
37
+ * Auto-flush interval in ms. Only applies when writeBuffering is true.
38
+ * Dirty chunks are flushed to the block store on this interval.
39
+ * Default: 1000 (1 second).
40
+ */
41
+ autoFlushIntervalMs?: number;
42
+ /**
43
+ * Enable file versioning. When true, block keys use the format
44
+ * {ino}/{chunkIndex}/{randomId} so old blocks are never overwritten.
45
+ * The metadata store must implement FsMetadataStoreVersioning.
46
+ * Default: false.
47
+ */
48
+ versioning?: boolean;
49
+ }
50
+ /**
51
+ * Extended return type when versioning is enabled.
52
+ * Exposes the versioning API alongside the VirtualFileSystem.
53
+ */
54
+ export interface ChunkedVfsVersioning {
55
+ /** Snapshot current state. Returns version number. */
56
+ createVersion(path: string): Promise<number>;
57
+ /** List all versions of a file, newest first. */
58
+ listVersions(path: string): Promise<VersionInfo[]>;
59
+ /** Restore file to a previous version. */
60
+ restoreVersion(path: string, version: number): Promise<void>;
61
+ /** Prune old versions according to policy. Returns count of versions pruned. */
62
+ pruneVersions(path: string, policy: RetentionPolicy): Promise<number>;
63
+ /** Find and delete orphaned blocks. Returns count of blocks deleted. */
64
+ collectGarbage(): Promise<number>;
65
+ }
66
+ export declare function createChunkedVfs(options: ChunkedVfsOptions): VirtualFileSystem;