@ai-ecoverse/slicc-kernel 1.146.2 → 1.146.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.
@@ -54,6 +54,7 @@ export declare class RangedFile {
54
54
  truncate(size: number): void;
55
55
  flush(): void;
56
56
  pin(): void;
57
+ prefetch(): void;
57
58
  reset(size: number): void;
58
59
  }
59
60
  export declare class AsyncRangedFile {
@@ -5,6 +5,18 @@ export interface Replacements {
5
5
  missed(path: string): boolean;
6
6
  generation(): number;
7
7
  changedSince(path: string, gen: number): boolean;
8
+ inFlight?(path: string): boolean;
9
+ }
10
+ export declare class PathMarks {
11
+ private gen;
12
+ private floor;
13
+ private readonly touched;
14
+ private readonly flying;
15
+ generation(): number;
16
+ touch(target: string): void;
17
+ changedSince(path: string, gen: number): boolean;
18
+ around<T>(paths: readonly string[], op: () => Promise<T>): Promise<T>;
19
+ inFlight(path: string): boolean;
8
20
  }
9
21
  export interface KeptFile {
10
22
  readonly hidden: string;
@@ -58,9 +70,7 @@ export declare class UnlinkedKeeper {
58
70
  private queue;
59
71
  private count;
60
72
  private readonly replacing;
61
- private gen;
62
- private floor;
63
- private readonly touched;
73
+ private readonly marks;
64
74
  private replaced;
65
75
  private readonly links;
66
76
  private readonly linked;
@@ -70,13 +80,14 @@ export declare class UnlinkedKeeper {
70
80
  busy?: (path: string) => boolean;
71
81
  owner?: UnlinkOwner | undefined;
72
82
  dirOwner?: NewOwner;
83
+ marks?: PathMarks;
73
84
  });
74
85
  private serial;
75
86
  wrap(fs?: KernelFs): KernelFs;
76
87
  settled(path: string): Promise<void>;
77
88
  generation(): number;
78
89
  changedSince(path: string, gen: number): boolean;
79
- private touch;
90
+ inFlight(path: string): boolean;
80
91
  missed(path: string): boolean;
81
92
  settle(pinned: Pinned, op: () => Promise<void>): Promise<void>;
82
93
  private heldWithin;
@@ -54,6 +54,7 @@ export interface ProcessListing {
54
54
  opfsCalls?: number;
55
55
  opfsOps?: number;
56
56
  cwdChecks?: number;
57
+ staleFds?: number;
57
58
  renameAcks?: {
58
59
  acks: number;
59
60
  busy: number;
@@ -225,6 +225,7 @@ export declare class Launcher {
225
225
  private readonly fstabRetries;
226
226
  private readonly inserted;
227
227
  private readonly openFiles;
228
+ private readonly pathMarks;
228
229
  private readonly deciding;
229
230
  readonly identities: {
230
231
  asked: number;
@@ -53,6 +53,7 @@ export declare class HeldSet extends Set<HeldPaths> {
53
53
  private readonly idle;
54
54
  constructor(idle: (path: string) => void);
55
55
  add(holds: HeldPaths): this;
56
+ doubt(paths: readonly string[], over?: string): void;
56
57
  delete(holds: HeldPaths): boolean;
57
58
  }
58
59
  export declare function heldUnder(held: Iterable<Map<string, number>>, target: string): boolean;
@@ -66,6 +67,9 @@ export declare class HeldPaths extends Map<string, number> implements UnlinkHold
66
67
  private readonly uses;
67
68
  private lastHandle;
68
69
  private owning;
70
+ private readonly bound;
71
+ private readonly doubted;
72
+ private doubts;
69
73
  onIdle?: (path: string) => void;
70
74
  keyOf(path: string): string;
71
75
  keptAt(path: string): KeptFile | undefined;
@@ -73,6 +77,12 @@ export declare class HeldPaths extends Map<string, number> implements UnlinkHold
73
77
  held(): Iterable<string>;
74
78
  isKept(path: string): boolean;
75
79
  private handlesAt;
80
+ doubt(over: string, exact?: boolean): void;
81
+ boundIno(handle: number): {
82
+ ino: number;
83
+ doubt: number;
84
+ } | undefined;
85
+ trust(handle: number, doubt: number): void;
76
86
  keptFor(handle: number): KeptFile | undefined;
77
87
  holdsHandle(handle: number): boolean;
78
88
  keeps(hidden: string): boolean;
@@ -80,7 +90,7 @@ export declare class HeldPaths extends Map<string, number> implements UnlinkHold
80
90
  unkeep(path: string, file: KeptFile): void;
81
91
  private letGo;
82
92
  releaseAll(): void;
83
- hold(path: string, on: boolean, open?: boolean, real?: string, handle?: number): number | undefined;
93
+ hold(path: string, on: boolean, open?: boolean, real?: string, handle?: number, ino?: number): number | undefined;
84
94
  private holdOpen;
85
95
  private holdWrite;
86
96
  own<T>(path: string, op: () => Promise<T>): Promise<T>;
@@ -113,6 +113,7 @@ export declare class WasiFds {
113
113
  reread(fd: number): void;
114
114
  flushPath(path: string): void;
115
115
  holdsUnder(path: string): boolean;
116
+ replacing(path: string): void;
116
117
  unlinking(path: string, linked?: SyncFsBridgeStat): void;
117
118
  unlinked(path: string, linked?: SyncFsBridgeStat): void;
118
119
  private openedIno;
@@ -132,6 +133,8 @@ export declare class WasiFds {
132
133
  private openCharDevice;
133
134
  open(path: string, oflags: number, rights: bigint, fdflags: number, mode?: number, nofollow?: boolean): number;
134
135
  private nofollow;
136
+ private readonly inos;
137
+ private otherFile;
135
138
  private openSpecial;
136
139
  private escaped;
137
140
  private regular;
@@ -150,6 +153,7 @@ export declare class WasiFds {
150
153
  private madeAtOnce;
151
154
  private createNew;
152
155
  private isLink;
156
+ private lstatOrMissing;
153
157
  private statOrMissing;
154
158
  private reopen;
155
159
  }
@@ -24,6 +24,7 @@ export declare class FileBuffer {
24
24
  maxFile: number | undefined;
25
25
  handle: number | undefined;
26
26
  moved: ((missing: boolean) => boolean) | undefined;
27
+ bound: SyncFsBridgeStat | undefined;
27
28
  constructor(fs: SyncFsFileIo, path: string, empty: boolean, maxFile?: number, size?: number, version?: string, watch?: RangedWatch);
28
29
  get path(): string;
29
30
  private retried;
@@ -31,6 +32,7 @@ export declare class FileBuffer {
31
32
  get isRanged(): boolean;
32
33
  get pin(): string | undefined;
33
34
  keep(): void;
35
+ prefetch(): void;
34
36
  load(): Uint8Array;
35
37
  size(): number;
36
38
  pread(max: number, at: number): Uint8Array;
@@ -6,6 +6,7 @@ interface LiveNodeState {
6
6
  named?: number | undefined;
7
7
  watch?: RangedWatch | undefined;
8
8
  stat?: SyncFsBridgeStat;
9
+ bound?: SyncFsBridgeStat;
9
10
  statAt?: number;
10
11
  filledAt?: number;
11
12
  statGen?: number;
@@ -27,4 +27,5 @@ export interface SyncFsStatJson {
27
27
  }
28
28
  export declare function guardOf(entry: SyncFsTokenEntry): Guard | undefined;
29
29
  export declare function servedFsCalls(): number;
30
+ export declare function staleFdCount(): number;
30
31
  export declare function dispatchSyncFs(req: SyncFsRequest): Promise<SyncFsResult>;
@@ -10,8 +10,13 @@ export interface SyncFsTokenEntry {
10
10
  quota: number;
11
11
  usage: number;
12
12
  } | undefined>;
13
- hold?: (path: string, held: boolean, open: boolean, real?: string, handle?: number) => number | undefined;
13
+ hold?: (path: string, held: boolean, open: boolean, real?: string, handle?: number, ino?: number) => number | undefined;
14
14
  keptFor?: (handle: number) => KeptFile | undefined;
15
+ boundIno?: (handle: number) => {
16
+ ino: number;
17
+ doubt: number;
18
+ } | undefined;
19
+ trust?: (handle: number, doubt: number) => void;
15
20
  gate?: <T>(path: string, op: () => Promise<T>) => Promise<T>;
16
21
  unlinked?: (path: string) => KeptFile | undefined;
17
22
  own?: <T>(path: string, op: () => Promise<T>) => Promise<T>;
@@ -19,6 +19,7 @@ export interface SyncFsRequest {
19
19
  version?: string;
20
20
  handle?: number;
21
21
  gen?: number;
22
+ ino?: number;
22
23
  uid?: number;
23
24
  gid?: number;
24
25
  exclusive?: boolean;
@@ -112,6 +113,7 @@ export interface SyncFsPosixBridge {
112
113
  hold?(path: string, held: boolean, open?: boolean, handle?: number, want?: number, seen?: {
113
114
  gen?: number;
114
115
  nofollow?: boolean;
116
+ ino?: number;
115
117
  }): number | undefined;
116
118
  access?(path: string, mode: number, kind?: AccessKind, nofollow?: boolean): void;
117
119
  create?(path: string, mode?: number, opening?: boolean): SyncFsCreated | undefined | void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-ecoverse/slicc-kernel",
3
- "version": "1.146.2",
3
+ "version": "1.146.4",
4
4
  "description": "SLICC's wasm-realm kernel: run Emscripten programs in the browser against OPFS, with fork, spawn, pipes and waitpid",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -64,10 +64,10 @@
64
64
  },
65
65
  "devDependencies": {
66
66
  "@ai-ecoverse/py-numpy": "2.5.4-4",
67
- "@ai-ecoverse/slicc-cdp": "1.31.2",
67
+ "@ai-ecoverse/slicc-cdp": "1.31.4",
68
68
  "@ai-ecoverse/slicc-node": "2.5.2",
69
69
  "@ai-ecoverse/slicc-scrub": "1.0.0",
70
- "@ai-ecoverse/slicc-shared-web": "2.8.5",
70
+ "@ai-ecoverse/slicc-shared-web": "2.10.1",
71
71
  "@ai-ecoverse/wasi-cargo": "0.99.0-6",
72
72
  "@ai-ecoverse/wasi-pnpm": "12.9.1-21",
73
73
  "@ai-ecoverse/wasi-ripgrep": "15.2.0-5",
@@ -83,7 +83,6 @@
83
83
  "@ai-ecoverse/wasm-sqlite3": "3.54.0-8",
84
84
  "@ai-ecoverse/wasm-tar": "1.35.0-9",
85
85
  "@ai-ecoverse/wasm-tls-engine": "4.2.0-8",
86
- "@ai-ecoverse/wasm-tree": "2.3.2-7",
87
86
  "@ai-ecoverse/wasm-util-linux": "2.42.4-7",
88
87
  "@biomejs/biome": "2.5.15",
89
88
  "@types/node": "24.19.2",