@ai-ecoverse/slicc-kernel 1.133.4 → 1.133.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.
- package/README.md +25 -1
- package/dist/kernel-worker.js +137 -4
- package/dist/kernel-worker.js.map +4 -4
- package/dist/node-process-worker.js +82 -4
- package/dist/node-process-worker.js.map +4 -4
- package/dist/node.js +137 -4
- package/dist/node.js.map +4 -4
- package/dist/process-worker.js +82 -4
- package/dist/process-worker.js.map +4 -4
- package/dist/types/kernel/held-cwd.d.ts +65 -0
- package/dist/types/kernel/host.d.ts +9 -0
- package/dist/types/kernel/process.d.ts +8 -0
- package/dist/types/kernel/protocol.d.ts +7 -0
- package/dist/types/launcher.d.ts +5 -0
- package/dist/types/process/wasi/wasi-fds.d.ts +7 -0
- package/dist/types/process/wasi/wasi-host.d.ts +2 -0
- package/package.json +2 -2
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { HeldCwdInit } from './protocol.js';
|
|
2
|
+
export declare const CWD_SLOTS = 1024;
|
|
3
|
+
export declare const UNTRACKED: number;
|
|
4
|
+
export interface HeldCwdReply {
|
|
5
|
+
slot?: number;
|
|
6
|
+
seen?: number;
|
|
7
|
+
dead?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface CwdAnswer {
|
|
10
|
+
gen: number;
|
|
11
|
+
alive: boolean;
|
|
12
|
+
slot?: number;
|
|
13
|
+
}
|
|
14
|
+
export type InodeOf = (path: string) => Promise<string | number | undefined>;
|
|
15
|
+
export declare class CwdTable {
|
|
16
|
+
readonly sab: SharedArrayBuffer;
|
|
17
|
+
private readonly view;
|
|
18
|
+
private readonly held;
|
|
19
|
+
private readonly free;
|
|
20
|
+
private next;
|
|
21
|
+
checks: number;
|
|
22
|
+
private readonly inodeOf;
|
|
23
|
+
constructor(inodeOf: InodeOf);
|
|
24
|
+
hold(path: string, from?: number): Promise<number>;
|
|
25
|
+
share(slot: number | undefined): number;
|
|
26
|
+
release(slot: number | undefined): void;
|
|
27
|
+
stateOf(slot: number): {
|
|
28
|
+
seen: number;
|
|
29
|
+
dead: boolean;
|
|
30
|
+
};
|
|
31
|
+
touched(paths: readonly string[], trees?: readonly string[]): void;
|
|
32
|
+
check(slot: number): Promise<CwdAnswer>;
|
|
33
|
+
}
|
|
34
|
+
export declare class HeldCwd {
|
|
35
|
+
private readonly view;
|
|
36
|
+
private seen;
|
|
37
|
+
private dead;
|
|
38
|
+
private slot;
|
|
39
|
+
private at;
|
|
40
|
+
private readonly ask;
|
|
41
|
+
constructor(sab: SharedArrayBuffer, slot: number, ask: () => CwdAnswer, state: {
|
|
42
|
+
seen: number;
|
|
43
|
+
dead: boolean;
|
|
44
|
+
path?: string;
|
|
45
|
+
});
|
|
46
|
+
moved(reply: HeldCwdReply, path?: string): boolean;
|
|
47
|
+
private follow;
|
|
48
|
+
alive(path?: string): boolean;
|
|
49
|
+
get current(): number;
|
|
50
|
+
}
|
|
51
|
+
export interface HeldOptions {
|
|
52
|
+
cwds?: SharedArrayBuffer;
|
|
53
|
+
cwdSlot?: number;
|
|
54
|
+
cwdState?: {
|
|
55
|
+
seen: number;
|
|
56
|
+
dead: boolean;
|
|
57
|
+
};
|
|
58
|
+
cwdCheck?: () => Promise<CwdAnswer>;
|
|
59
|
+
cwdChdir?: (path: string) => Promise<HeldCwdReply>;
|
|
60
|
+
}
|
|
61
|
+
export declare function heldInit(o: HeldOptions): {
|
|
62
|
+
held?: HeldCwdInit;
|
|
63
|
+
};
|
|
64
|
+
export declare function heldHooks(o: HeldOptions): Pick<HeldOptions, 'cwdCheck' | 'cwdChdir'>;
|
|
65
|
+
export declare function inheritedCwd(chdir: boolean | undefined, parent: number | undefined): number | undefined;
|
|
@@ -9,6 +9,7 @@ import { type CpuTimes } from './cpu-clock.js';
|
|
|
9
9
|
import { type Cred } from './cred.js';
|
|
10
10
|
import { type FdTable, type OpenFile } from './fd-table.js';
|
|
11
11
|
import type { FifoTable } from './fifo.js';
|
|
12
|
+
import { type CwdAnswer, type HeldCwdReply } from './held-cwd.js';
|
|
12
13
|
import type { JobTable } from './jobs.js';
|
|
13
14
|
import type { KernelLocks } from './lock-service.js';
|
|
14
15
|
import type { HttpHandles } from './net/http-syscalls.js';
|
|
@@ -31,6 +32,14 @@ export interface WasmWorkerLike {
|
|
|
31
32
|
export interface SpawnWasmOptions {
|
|
32
33
|
pid: number;
|
|
33
34
|
changes?: SharedArrayBuffer;
|
|
35
|
+
cwds?: SharedArrayBuffer;
|
|
36
|
+
cwdSlot?: number;
|
|
37
|
+
cwdState?: {
|
|
38
|
+
seen: number;
|
|
39
|
+
dead: boolean;
|
|
40
|
+
};
|
|
41
|
+
cwdCheck?: () => Promise<CwdAnswer>;
|
|
42
|
+
cwdChdir?: (path: string) => Promise<HeldCwdReply>;
|
|
34
43
|
ignored?: number;
|
|
35
44
|
blocked?: BlockedMask;
|
|
36
45
|
umask?: number;
|
|
@@ -13,6 +13,7 @@ import { type Cred, type CredChange } from './cred.js';
|
|
|
13
13
|
import { type EpollSyscall } from './epoll.js';
|
|
14
14
|
import { type DeviceAccess, type FdTable, type HeldMeta, type KernelFdKind, type OpenFile } from './fd-table.js';
|
|
15
15
|
import type { FifoTable } from './fifo.js';
|
|
16
|
+
import type { CwdAnswer, HeldCwdReply } from './held-cwd.js';
|
|
16
17
|
import { type HostSyscall } from './host-ops.js';
|
|
17
18
|
import type { JobTable } from './jobs.js';
|
|
18
19
|
import type { KernelLocks } from './lock-service.js';
|
|
@@ -188,6 +189,11 @@ export type WasmSyscall = {
|
|
|
188
189
|
} | {
|
|
189
190
|
op: 'proc-umask';
|
|
190
191
|
mask?: number;
|
|
192
|
+
} | {
|
|
193
|
+
op: 'cwd-check';
|
|
194
|
+
} | {
|
|
195
|
+
op: 'cwd-chdir';
|
|
196
|
+
path: string;
|
|
191
197
|
} | {
|
|
192
198
|
op: 'proc-cred';
|
|
193
199
|
} | {
|
|
@@ -353,6 +359,8 @@ export declare function isWasmSyscall(req: object): req is WasmSyscall;
|
|
|
353
359
|
export declare const DEFAULT_UMASK = 18;
|
|
354
360
|
export interface WasmProcessOptions {
|
|
355
361
|
ignored?: number;
|
|
362
|
+
cwdCheck?: () => Promise<CwdAnswer>;
|
|
363
|
+
cwdChdir?: (path: string) => Promise<HeldCwdReply>;
|
|
356
364
|
source?: SourceCheck;
|
|
357
365
|
umask?: number;
|
|
358
366
|
cred?: Cred;
|
|
@@ -80,6 +80,12 @@ export interface InheritedFd {
|
|
|
80
80
|
desc?: number;
|
|
81
81
|
fifo?: string;
|
|
82
82
|
}
|
|
83
|
+
export interface HeldCwdInit {
|
|
84
|
+
sab: SharedArrayBuffer;
|
|
85
|
+
slot: number;
|
|
86
|
+
seen: number;
|
|
87
|
+
dead: boolean;
|
|
88
|
+
}
|
|
83
89
|
export interface WasmProcessInitMsg {
|
|
84
90
|
type: typeof WASM_PROCESS_INIT;
|
|
85
91
|
pid: number;
|
|
@@ -90,6 +96,7 @@ export interface WasmProcessInitMsg {
|
|
|
90
96
|
cwd: string;
|
|
91
97
|
sab: SharedArrayBuffer;
|
|
92
98
|
changes?: SharedArrayBuffer;
|
|
99
|
+
held?: HeldCwdInit;
|
|
93
100
|
ppid?: number;
|
|
94
101
|
umask?: number;
|
|
95
102
|
cred?: Cred;
|
package/dist/types/launcher.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ import { FsWatchers } from './fs/watch.js';
|
|
|
14
14
|
import { type ClipboardHook } from './kernel/clipboard.js';
|
|
15
15
|
import type { CpuTimes } from './kernel/cpu-clock.js';
|
|
16
16
|
import { type Cred } from './kernel/cred.js';
|
|
17
|
+
import { CwdTable } from './kernel/held-cwd.js';
|
|
17
18
|
import { type WasmWorkerLike } from './kernel/host.js';
|
|
18
19
|
import type { CaStore } from './kernel/net/realm-ca.js';
|
|
19
20
|
import { Resolver } from './kernel/net/resolver.js';
|
|
@@ -200,6 +201,8 @@ export declare class Launcher {
|
|
|
200
201
|
readonly hostname: string;
|
|
201
202
|
readonly watchers: FsWatchers;
|
|
202
203
|
private readonly changes;
|
|
204
|
+
readonly cwds: CwdTable;
|
|
205
|
+
private readonly cwdSlots;
|
|
203
206
|
private readonly pnpmHome;
|
|
204
207
|
private readonly pnpmChain;
|
|
205
208
|
private pnpmMade;
|
|
@@ -343,6 +346,8 @@ export declare class Launcher {
|
|
|
343
346
|
private identityOf;
|
|
344
347
|
private running;
|
|
345
348
|
private decide;
|
|
349
|
+
private heldFor;
|
|
350
|
+
private chdirHeld;
|
|
346
351
|
private forker;
|
|
347
352
|
private keySignal;
|
|
348
353
|
private resolvePrefixes;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type DeviceAccess, type DeviceMeta, type KernelFdKind } from '../../kernel/fd-table.js';
|
|
2
|
+
import type { HeldCwd } from '../../kernel/held-cwd.js';
|
|
2
3
|
import type { WasmSyscall } from '../../kernel/process.js';
|
|
3
4
|
import { type SyncFsBridgeStat, type SyncFsPosixBridge } from '../../realm/sync-fs-wire.js';
|
|
4
5
|
import type { ProcessSys } from '../kernel-streams.js';
|
|
@@ -117,7 +118,13 @@ export declare class WasiFds {
|
|
|
117
118
|
private survives;
|
|
118
119
|
private detach;
|
|
119
120
|
renamed(from: string, to: string, replacedLinked?: SyncFsBridgeStat): void;
|
|
121
|
+
held: HeldCwd | undefined;
|
|
122
|
+
private cwdEntry;
|
|
123
|
+
goneCwd(dir: Extract<WasiEntry, {
|
|
124
|
+
type: 'dir';
|
|
125
|
+
}>): boolean;
|
|
120
126
|
resolve(dirfd: number, path: string): string;
|
|
127
|
+
private joined;
|
|
121
128
|
private openKernelDevice;
|
|
122
129
|
private openCharDevice;
|
|
123
130
|
open(path: string, oflags: number, rights: bigint, fdflags: number, mode?: number): number;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DeviceMeta, KernelFdKind } from '../../kernel/fd-table.js';
|
|
2
|
+
import type { HeldCwd } from '../../kernel/held-cwd.js';
|
|
2
3
|
import type { SyncFsPosixBridge } from '../../realm/sync-fs-wire.js';
|
|
3
4
|
import { WasiFds, type WasiForkFd, type WasiKernel } from './wasi-fds.js';
|
|
4
5
|
import { WasiMemory } from './wasi-memory.js';
|
|
@@ -35,6 +36,7 @@ export interface WasiHostOptions {
|
|
|
35
36
|
};
|
|
36
37
|
preopenRoot?: boolean;
|
|
37
38
|
bare?: boolean;
|
|
39
|
+
held?: HeldCwd;
|
|
38
40
|
}
|
|
39
41
|
export type WasiFunction = (...args: never[]) => number | undefined;
|
|
40
42
|
export declare class WasiHost {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-ecoverse/slicc-kernel",
|
|
3
|
-
"version": "1.133.
|
|
3
|
+
"version": "1.133.5",
|
|
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",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"@ai-ecoverse/py-numpy": "2.5.4-1",
|
|
67
67
|
"@ai-ecoverse/slicc-node": "2.5.1",
|
|
68
68
|
"@ai-ecoverse/slicc-scrub": "1.0.0",
|
|
69
|
-
"@ai-ecoverse/slicc-shared-web": "1.25.
|
|
69
|
+
"@ai-ecoverse/slicc-shared-web": "1.25.2",
|
|
70
70
|
"@ai-ecoverse/wasi-cargo": "0.99.0-3",
|
|
71
71
|
"@ai-ecoverse/wasi-pnpm": "12.9.1-15",
|
|
72
72
|
"@ai-ecoverse/wasi-ripgrep": "15.2.0-5",
|