@ai-ecoverse/slicc-kernel 1.152.2 → 1.153.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.
- package/README.md +26 -2
- package/dist/driver-worker.js +147 -10
- package/dist/driver-worker.js.map +4 -4
- package/dist/index.js +168 -14
- package/dist/index.js.map +4 -4
- package/dist/kernel-worker.js +796 -147
- package/dist/kernel-worker.js.map +4 -4
- package/dist/node-driver-worker.js +147 -10
- package/dist/node-driver-worker.js.map +4 -4
- package/dist/node-process-worker.js +71 -21
- package/dist/node-process-worker.js.map +3 -3
- package/dist/node.js +934 -162
- package/dist/node.js.map +4 -4
- package/dist/process-worker.js +71 -21
- package/dist/process-worker.js.map +3 -3
- package/dist/types/client/attach.d.ts +2 -0
- package/dist/types/client/protocol.d.ts +4 -0
- package/dist/types/client/serve-client.d.ts +2 -0
- package/dist/types/embedder-relay.d.ts +58 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/kernel/embedder.d.ts +100 -0
- package/dist/types/kernel/fd-table.d.ts +3 -1
- package/dist/types/kernel/host.d.ts +8 -0
- package/dist/types/kernel/process.d.ts +17 -0
- package/dist/types/launcher.d.ts +13 -0
- package/dist/types/node.d.ts +3 -0
- package/dist/types/process/kernel-streams.d.ts +2 -1
- package/dist/types/process/wasi/wasi-fds.d.ts +1 -0
- package/dist/types/serve.d.ts +3 -0
- package/package.json +2 -2
|
@@ -2,6 +2,7 @@ import type { CdpHook } from '../cdp/types.js';
|
|
|
2
2
|
import type { FacadeHook } from '../facade/types.js';
|
|
3
3
|
import type { FsStat, UsersMode } from '../fs/types.js';
|
|
4
4
|
import type { WatchChange } from '../fs/watch.js';
|
|
5
|
+
import { type EmbedderHook } from '../kernel/embedder.js';
|
|
5
6
|
import type { RealmTransport, RealmTransportRequest, RealmTransportResponse, RealmTransportTraits } from '../kernel/net/transport.js';
|
|
6
7
|
import type { MountEntry, MountSpec } from '../mount/mount-fs.js';
|
|
7
8
|
import { type DialledSocket, type DialOptions } from './dial-stream.js';
|
|
@@ -19,6 +20,7 @@ export declare class KernelCallError extends Error {
|
|
|
19
20
|
export interface AttachOptions {
|
|
20
21
|
timeoutMs?: number;
|
|
21
22
|
locks?: LockManagerLike | null;
|
|
23
|
+
requests?: EmbedderHook;
|
|
22
24
|
}
|
|
23
25
|
export interface SpawnOptions {
|
|
24
26
|
cwd?: string;
|
|
@@ -7,6 +7,10 @@ export declare const PROTOCOL: readonly [number, number];
|
|
|
7
7
|
export interface ClientHello {
|
|
8
8
|
protocol: readonly [number, number];
|
|
9
9
|
lock?: string;
|
|
10
|
+
requests?: Record<string, {
|
|
11
|
+
group?: string;
|
|
12
|
+
users?: Array<string | number>;
|
|
13
|
+
}>;
|
|
10
14
|
}
|
|
11
15
|
export interface KernelHello {
|
|
12
16
|
protocol: readonly [number, number];
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { EmbedderHook, EmbedderKindPolicy, EmbedderStamp } from './kernel/embedder.js';
|
|
2
|
+
export interface EmbedderPort {
|
|
3
|
+
postMessage(message: unknown, transfer?: Transferable[]): void;
|
|
4
|
+
}
|
|
5
|
+
type Kinds = Readonly<Record<string, EmbedderKindPolicy>>;
|
|
6
|
+
export interface EmbedderAsk {
|
|
7
|
+
id: number;
|
|
8
|
+
client: number;
|
|
9
|
+
kind: string;
|
|
10
|
+
options: Record<string, unknown>;
|
|
11
|
+
stamp: EmbedderStamp;
|
|
12
|
+
}
|
|
13
|
+
export type EmbedderToPage = {
|
|
14
|
+
ask: EmbedderAsk;
|
|
15
|
+
} | {
|
|
16
|
+
id: number;
|
|
17
|
+
body: Uint8Array;
|
|
18
|
+
} | {
|
|
19
|
+
id: number;
|
|
20
|
+
bodyEnd: true;
|
|
21
|
+
} | {
|
|
22
|
+
id: number;
|
|
23
|
+
pull: true;
|
|
24
|
+
} | {
|
|
25
|
+
id: number;
|
|
26
|
+
cancel: string;
|
|
27
|
+
};
|
|
28
|
+
export type EmbedderToKernel = {
|
|
29
|
+
id: number;
|
|
30
|
+
ready: true;
|
|
31
|
+
} | {
|
|
32
|
+
id: number;
|
|
33
|
+
chunk: Uint8Array;
|
|
34
|
+
} | {
|
|
35
|
+
id: number;
|
|
36
|
+
done: true;
|
|
37
|
+
} | {
|
|
38
|
+
id: number;
|
|
39
|
+
error: {
|
|
40
|
+
name: string;
|
|
41
|
+
message: string;
|
|
42
|
+
};
|
|
43
|
+
} | {
|
|
44
|
+
id: number;
|
|
45
|
+
progress: string;
|
|
46
|
+
} | {
|
|
47
|
+
id: number;
|
|
48
|
+
bodyPull: true;
|
|
49
|
+
};
|
|
50
|
+
export declare function embedderAsker(port: EmbedderPort): {
|
|
51
|
+
hookFor: (client: number, kinds: Kinds) => EmbedderHook;
|
|
52
|
+
answer: (message: EmbedderToKernel) => void;
|
|
53
|
+
};
|
|
54
|
+
export declare function embedderAnswerer(port: EmbedderPort, hookFor: (client: number) => EmbedderHook | undefined): {
|
|
55
|
+
handle(data: unknown): boolean;
|
|
56
|
+
};
|
|
57
|
+
export declare function embedderReplyOf(data: unknown): EmbedderToKernel | undefined;
|
|
58
|
+
export {};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import type { DenialHook } from './fs/dac.js';
|
|
|
7
7
|
import { type Protection } from './fs/protect.js';
|
|
8
8
|
import { type UsersMode } from './fs/types.js';
|
|
9
9
|
import type { ClipboardHook } from './kernel/clipboard.js';
|
|
10
|
+
import { type EmbedderHook } from './kernel/embedder.js';
|
|
10
11
|
import type { RouteTable } from './kernel/net/routes.js';
|
|
11
12
|
import { type NetworkUplink } from './kernel/net/uplink.js';
|
|
12
13
|
import type { SealedHook } from './kernel/sealed.js';
|
|
@@ -24,6 +25,7 @@ export type { FacadeConnection, FacadeHook, FacadeInfo, FacadeSpec, FacadeSpecs,
|
|
|
24
25
|
export type { Attestation, AttestedDir } from './fs/attest.js';
|
|
25
26
|
export type { Denial, DenialHook } from './fs/dac.js';
|
|
26
27
|
export type { ClipboardHook, ClipboardStamp } from './kernel/clipboard.js';
|
|
28
|
+
export type { EmbedderHook, EmbedderKindPolicy, EmbedderReply, EmbedderRequest, EmbedderStamp, } from './kernel/embedder.js';
|
|
27
29
|
export type { RouteTable } from './kernel/net/routes.js';
|
|
28
30
|
export type { NetworkUplink, ResolveAnswer, ResolveFamily, UplinkTraits, } from './kernel/net/uplink.js';
|
|
29
31
|
export type { SealedAbortReason, SealedCaller, SealedHook, SealedRequest, } from './kernel/sealed.js';
|
|
@@ -73,6 +75,7 @@ export interface KernelOptions {
|
|
|
73
75
|
onDenial?: DenialHook;
|
|
74
76
|
sealed?: SealedHook;
|
|
75
77
|
clipboard?: ClipboardHook;
|
|
78
|
+
requests?: EmbedderHook;
|
|
76
79
|
approve?: ApproveHook;
|
|
77
80
|
protect?: Protection;
|
|
78
81
|
}
|
|
@@ -99,6 +102,7 @@ export interface RunResult {
|
|
|
99
102
|
export interface ConnectOptions {
|
|
100
103
|
user?: string | number;
|
|
101
104
|
tag?: string;
|
|
105
|
+
requests?: EmbedderHook | 'attach';
|
|
102
106
|
}
|
|
103
107
|
export interface KernelGroups {
|
|
104
108
|
list(): Promise<Group[]>;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { UsersMode } from '../fs/types.js';
|
|
2
|
+
import { KernelError, type OpenAccess, OpenFile, type PollState } from './fd-table.js';
|
|
3
|
+
export declare const EMBEDDER_PATH = "/dev/embedder";
|
|
4
|
+
export declare const EMBEDDER_MINOR = 252;
|
|
5
|
+
export declare const EMBEDDER_HEADER_MAX: number;
|
|
6
|
+
export declare const EMBEDDER_WINDOW: number;
|
|
7
|
+
export declare const EMBEDDER_BUDGET: number;
|
|
8
|
+
export declare const EMBEDDER_PER_PROCESS = 16;
|
|
9
|
+
export declare const EMBEDDER_PROGRESS_PER_SECOND = 4;
|
|
10
|
+
export interface EmbedderStamp {
|
|
11
|
+
pid: number;
|
|
12
|
+
uid: number;
|
|
13
|
+
gid: number;
|
|
14
|
+
groups: number[];
|
|
15
|
+
users: UsersMode;
|
|
16
|
+
kind: string;
|
|
17
|
+
tag?: string;
|
|
18
|
+
tags?: string[];
|
|
19
|
+
}
|
|
20
|
+
export interface EmbedderKindPolicy {
|
|
21
|
+
group?: string;
|
|
22
|
+
users?: Array<string | number>;
|
|
23
|
+
}
|
|
24
|
+
export type EmbedderReply = ReadableStream<Uint8Array> | Uint8Array | string | undefined | void;
|
|
25
|
+
export interface EmbedderRequest {
|
|
26
|
+
kind: string;
|
|
27
|
+
options: Record<string, unknown>;
|
|
28
|
+
body: ReadableStream<Uint8Array>;
|
|
29
|
+
stamp: EmbedderStamp;
|
|
30
|
+
signal: AbortSignal;
|
|
31
|
+
progress(line: string): void;
|
|
32
|
+
}
|
|
33
|
+
export interface EmbedderHook {
|
|
34
|
+
kinds: Readonly<Record<string, EmbedderKindPolicy>>;
|
|
35
|
+
handle(request: EmbedderRequest): Promise<EmbedderReply>;
|
|
36
|
+
}
|
|
37
|
+
export interface EmbedderCaller {
|
|
38
|
+
pid: number;
|
|
39
|
+
shownPid: number;
|
|
40
|
+
euid: number;
|
|
41
|
+
egid: number;
|
|
42
|
+
groups: number[];
|
|
43
|
+
sessionUid: number;
|
|
44
|
+
client: number;
|
|
45
|
+
tags: readonly string[] | undefined;
|
|
46
|
+
progress(line: string): void;
|
|
47
|
+
closing(): AbortSignal;
|
|
48
|
+
}
|
|
49
|
+
export interface EmbedderLookup {
|
|
50
|
+
groupId(name: string): Promise<number | undefined>;
|
|
51
|
+
userId(name: string): Promise<number | undefined>;
|
|
52
|
+
}
|
|
53
|
+
export declare function embedderFailure(err: unknown): KernelError;
|
|
54
|
+
export declare class EmbedderChannel {
|
|
55
|
+
readonly access: OpenAccess;
|
|
56
|
+
readonly owner: number;
|
|
57
|
+
caller: EmbedderCaller;
|
|
58
|
+
private readonly broker;
|
|
59
|
+
private header;
|
|
60
|
+
private body;
|
|
61
|
+
private reply;
|
|
62
|
+
private replied;
|
|
63
|
+
private rest;
|
|
64
|
+
private done;
|
|
65
|
+
private failure;
|
|
66
|
+
private reported;
|
|
67
|
+
private readonly abort;
|
|
68
|
+
private closed;
|
|
69
|
+
private readonly throttle;
|
|
70
|
+
constructor(broker: EmbedderBroker, access: OpenAccess, caller: EmbedderCaller);
|
|
71
|
+
get dispatched(): boolean;
|
|
72
|
+
private fail;
|
|
73
|
+
private report;
|
|
74
|
+
private dispatch;
|
|
75
|
+
write(bytes: Uint8Array, signal?: AbortSignal): Promise<number>;
|
|
76
|
+
private writeBody;
|
|
77
|
+
private readerOf;
|
|
78
|
+
read(max: number, signal?: AbortSignal): Promise<Uint8Array>;
|
|
79
|
+
private next;
|
|
80
|
+
poll(): PollState;
|
|
81
|
+
cancel(reason: 'interrupted' | 'closed'): void;
|
|
82
|
+
close(): Promise<void>;
|
|
83
|
+
private drain;
|
|
84
|
+
}
|
|
85
|
+
export declare class EmbedderBroker {
|
|
86
|
+
readonly users: UsersMode;
|
|
87
|
+
private readonly lookup;
|
|
88
|
+
private readonly hooks;
|
|
89
|
+
private readonly budget;
|
|
90
|
+
private readonly open;
|
|
91
|
+
readonly tagsOf: (pid: number) => readonly string[] | undefined;
|
|
92
|
+
constructor(users: UsersMode, lookup: EmbedderLookup, tagsOf?: (pid: number) => readonly string[] | undefined, budget?: number);
|
|
93
|
+
register(client: number, hook: EmbedderHook | undefined): () => void;
|
|
94
|
+
hookFor(client: number): EmbedderHook | undefined;
|
|
95
|
+
private allowed;
|
|
96
|
+
admit(kind: string, caller: EmbedderCaller): Promise<EmbedderStamp>;
|
|
97
|
+
channel(access: OpenAccess, caller: EmbedderCaller): OpenFile;
|
|
98
|
+
release(channel: EmbedderChannel): void;
|
|
99
|
+
}
|
|
100
|
+
export declare function kindsOf(hook: EmbedderHook): Record<string, EmbedderKindPolicy>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ClipboardChannel } from './clipboard.js';
|
|
2
|
+
import type { EmbedderChannel } from './embedder.js';
|
|
2
3
|
import type { PtyPair } from './pty.js';
|
|
3
4
|
import type { SealedChannel } from './sealed.js';
|
|
4
5
|
import type { KernelTty } from './tty.js';
|
|
@@ -39,6 +40,7 @@ export interface KernelFile {
|
|
|
39
40
|
pty?: PtyPair;
|
|
40
41
|
sealed?: SealedChannel;
|
|
41
42
|
clipboard?: ClipboardChannel;
|
|
43
|
+
embedder?: EmbedderChannel;
|
|
42
44
|
held?: true;
|
|
43
45
|
heldMeta?: HeldMeta;
|
|
44
46
|
identity?: object;
|
|
@@ -78,7 +80,7 @@ export declare function nullFile(): OpenFile;
|
|
|
78
80
|
export declare function deviceAt(path: string): KernelDevice | undefined;
|
|
79
81
|
export declare function deviceFile(device: KernelDevice, access?: DeviceAccess): OpenFile;
|
|
80
82
|
export declare function heldFile(meta?: HeldMeta): OpenFile;
|
|
81
|
-
export type KernelFdKind = 'tty' | 'stream' | 'file' | 'socket' | 'held' | 'device' | 'sealed' | 'clipboard';
|
|
83
|
+
export type KernelFdKind = 'tty' | 'stream' | 'file' | 'socket' | 'held' | 'device' | 'sealed' | 'clipboard' | 'embedder';
|
|
82
84
|
export declare function kernelFdKind(file: KernelFile): Exclude<KernelFdKind, 'socket'>;
|
|
83
85
|
export interface ForkedHandles {
|
|
84
86
|
fork(): ForkedHandles;
|
|
@@ -7,6 +7,7 @@ import type { ChildForker, ChildSpawner } from './children.js';
|
|
|
7
7
|
import type { ClipboardBroker } from './clipboard.js';
|
|
8
8
|
import { type CpuTimes } from './cpu-clock.js';
|
|
9
9
|
import { type Cred } from './cred.js';
|
|
10
|
+
import type { EmbedderBroker } from './embedder.js';
|
|
10
11
|
import { type FdTable, type OpenFile } from './fd-table.js';
|
|
11
12
|
import type { FifoTable } from './fifo.js';
|
|
12
13
|
import { type CwdAnswer, type HeldCwdReply } from './held-cwd.js';
|
|
@@ -54,6 +55,13 @@ export interface SpawnWasmOptions {
|
|
|
54
55
|
sealed?: SealedBroker;
|
|
55
56
|
outputFilter?: (file: OpenFile) => OpenFile;
|
|
56
57
|
clipboard?: ClipboardBroker;
|
|
58
|
+
embedder?: {
|
|
59
|
+
broker: EmbedderBroker;
|
|
60
|
+
session: () => {
|
|
61
|
+
client: number;
|
|
62
|
+
uid: number;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
57
65
|
readonlyAt?: (path: string) => boolean;
|
|
58
66
|
dac?: Dac;
|
|
59
67
|
identity?: () => Promise<{
|
|
@@ -10,6 +10,7 @@ import type { SudoCall, SudoResult } from '../sudo.js';
|
|
|
10
10
|
import { type ChildForker, type ChildSpawner, type ChildStdio, type InheritedSlot } from './children.js';
|
|
11
11
|
import type { ClipboardBroker } from './clipboard.js';
|
|
12
12
|
import { type Cred, type CredChange } from './cred.js';
|
|
13
|
+
import { type EmbedderBroker } from './embedder.js';
|
|
13
14
|
import { type EpollSyscall } from './epoll.js';
|
|
14
15
|
import { type DeviceAccess, type FdTable, type HeldMeta, type KernelFdKind, type OpenFile } from './fd-table.js';
|
|
15
16
|
import type { FifoTable } from './fifo.js';
|
|
@@ -230,6 +231,9 @@ export type WasmSyscall = {
|
|
|
230
231
|
} | {
|
|
231
232
|
op: 'fd-clipboard-abort';
|
|
232
233
|
fd: number;
|
|
234
|
+
} | {
|
|
235
|
+
op: 'fd-open-embedder';
|
|
236
|
+
flags: number;
|
|
233
237
|
} | {
|
|
234
238
|
op: 'tty-get';
|
|
235
239
|
fd: number;
|
|
@@ -370,6 +374,12 @@ export interface WasmProcessOptions {
|
|
|
370
374
|
outputFilter?: (file: OpenFile) => OpenFile;
|
|
371
375
|
clipboard?: ClipboardBroker;
|
|
372
376
|
clipboardName?: string;
|
|
377
|
+
embedder?: EmbedderBroker;
|
|
378
|
+
embedderSession?: () => {
|
|
379
|
+
client: number;
|
|
380
|
+
uid: number;
|
|
381
|
+
};
|
|
382
|
+
embedderName?: string;
|
|
373
383
|
readonlyAt?: (path: string) => boolean;
|
|
374
384
|
guard?: {
|
|
375
385
|
dac: Dac;
|
|
@@ -504,6 +514,13 @@ export declare class WasmProcess {
|
|
|
504
514
|
private cancelSignal;
|
|
505
515
|
private read;
|
|
506
516
|
private readClipboard;
|
|
517
|
+
private readEmbedder;
|
|
518
|
+
private writeEmbedder;
|
|
519
|
+
private deviceComplaint;
|
|
520
|
+
private complainLine;
|
|
521
|
+
private embedderCaller;
|
|
522
|
+
private closeFd;
|
|
523
|
+
private openEmbedder;
|
|
507
524
|
complain(line: string): Promise<boolean>;
|
|
508
525
|
private clipboardComplaint;
|
|
509
526
|
private write;
|
package/dist/types/launcher.d.ts
CHANGED
|
@@ -12,6 +12,11 @@ import type { KernelFs, UsersMode } from './fs/types.js';
|
|
|
12
12
|
import { type UnlinkOwner } from './fs/unlinked.js';
|
|
13
13
|
import { FsWatchers } from './fs/watch.js';
|
|
14
14
|
import { type ClipboardHook } from './kernel/clipboard.js';
|
|
15
|
+
import { EmbedderBroker, type EmbedderHook } from './kernel/embedder.js';
|
|
16
|
+
type EmbedderSession = {
|
|
17
|
+
client: number;
|
|
18
|
+
uid: number;
|
|
19
|
+
};
|
|
15
20
|
import type { CpuTimes } from './kernel/cpu-clock.js';
|
|
16
21
|
import { type Cred } from './kernel/cred.js';
|
|
17
22
|
import { CwdTable } from './kernel/held-cwd.js';
|
|
@@ -65,6 +70,7 @@ export interface LauncherOptions {
|
|
|
65
70
|
onDenial?: DenialHook;
|
|
66
71
|
sealed?: SealedHook;
|
|
67
72
|
clipboard?: ClipboardHook;
|
|
73
|
+
embedder?: EmbedderHook;
|
|
68
74
|
approve?: ApproveHook;
|
|
69
75
|
sudoTimeoutMs?: number;
|
|
70
76
|
protect?: Protection;
|
|
@@ -101,6 +107,7 @@ export interface RunOptions {
|
|
|
101
107
|
tags?: readonly string[];
|
|
102
108
|
tagBase?: number;
|
|
103
109
|
login?: boolean;
|
|
110
|
+
session?: number;
|
|
104
111
|
}
|
|
105
112
|
export interface TerminalOptions {
|
|
106
113
|
cwd?: string;
|
|
@@ -111,6 +118,7 @@ export interface TerminalOptions {
|
|
|
111
118
|
tag?: string;
|
|
112
119
|
tags?: readonly string[];
|
|
113
120
|
tagBase?: number;
|
|
121
|
+
session?: number;
|
|
114
122
|
onData: (bytes: Uint8Array) => void;
|
|
115
123
|
}
|
|
116
124
|
export interface TerminalSession {
|
|
@@ -186,6 +194,7 @@ export declare class Launcher {
|
|
|
186
194
|
private readonly described;
|
|
187
195
|
private readonly creds;
|
|
188
196
|
private readonly tags;
|
|
197
|
+
private readonly sessions;
|
|
189
198
|
private readonly tagBases;
|
|
190
199
|
private readonly links;
|
|
191
200
|
private readonly freshModules;
|
|
@@ -243,6 +252,7 @@ export declare class Launcher {
|
|
|
243
252
|
private readonly sealed;
|
|
244
253
|
private readonly scrubs;
|
|
245
254
|
private readonly clipboard;
|
|
255
|
+
readonly embedder: EmbedderBroker;
|
|
246
256
|
private readonly rootFs;
|
|
247
257
|
private fileWatches;
|
|
248
258
|
private nextPid;
|
|
@@ -376,6 +386,9 @@ export declare class Launcher {
|
|
|
376
386
|
private umaskOf;
|
|
377
387
|
private imageOf;
|
|
378
388
|
credOf(pid: number): Cred;
|
|
389
|
+
private wireSealed;
|
|
390
|
+
private embedderBroker;
|
|
391
|
+
sessionOf(pid: number): EmbedderSession;
|
|
379
392
|
tagOf(pid: number): string | undefined;
|
|
380
393
|
tagsOf(pid: number): readonly string[] | undefined;
|
|
381
394
|
private wireDac;
|
package/dist/types/node.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import type { Protection } from './fs/protect.js';
|
|
|
7
7
|
import { type UsersMode } from './fs/types.js';
|
|
8
8
|
import type { ConnectOptions, KernelGroups, KernelIntegrity, KernelUsers, RunOptions, RunResult, Terminal, TerminalOptions } from './index.js';
|
|
9
9
|
import type { ClipboardHook } from './kernel/clipboard.js';
|
|
10
|
+
import { type EmbedderHook } from './kernel/embedder.js';
|
|
10
11
|
import type { RouteTable } from './kernel/net/routes.js';
|
|
11
12
|
import type { NetworkUplink } from './kernel/net/uplink.js';
|
|
12
13
|
import type { SealedHook } from './kernel/sealed.js';
|
|
@@ -23,6 +24,7 @@ export type { FacadeConnection, FacadeHook, FacadeInfo, FacadeSpec, FacadeSpecs,
|
|
|
23
24
|
export type { Denial, DenialHook } from './fs/dac.js';
|
|
24
25
|
export type { ConnectOptions, Ended, KernelGroups, KernelIntegrity, KernelUsers, NetworkUplink, ResolveAnswer, ResolveFamily, RouteTable, RunOptions, RunResult, Terminal, TerminalOptions, TerminalSignal, } from './index.js';
|
|
25
26
|
export type { ClipboardHook, ClipboardStamp } from './kernel/clipboard.js';
|
|
27
|
+
export type { EmbedderHook, EmbedderKindPolicy, EmbedderReply, EmbedderRequest, EmbedderStamp, } from './kernel/embedder.js';
|
|
26
28
|
export type { SealedAbortReason, SealedCaller, SealedHook, SealedRequest, } from './kernel/sealed.js';
|
|
27
29
|
export type { ConnectorStamp } from './kernel/socket.js';
|
|
28
30
|
export type { HostfsEvent, HostfsGrant, HostfsGrantHook, HostfsPortGrant, HostfsTransport, } from './mount/hostfs.js';
|
|
@@ -57,6 +59,7 @@ export interface NodeKernelOptions {
|
|
|
57
59
|
onDenial?: DenialHook;
|
|
58
60
|
sealed?: SealedHook;
|
|
59
61
|
clipboard?: ClipboardHook;
|
|
62
|
+
requests?: EmbedderHook;
|
|
60
63
|
approve?: ApproveHook;
|
|
61
64
|
protect?: Protection;
|
|
62
65
|
cron?: {
|
|
@@ -64,6 +64,7 @@ export interface ProcessSys {
|
|
|
64
64
|
openSealed?(flags: number): number;
|
|
65
65
|
openClipboard?(flags: number): number;
|
|
66
66
|
clipboardAbort?(fd: number): void;
|
|
67
|
+
openEmbedder?(flags: number): number;
|
|
67
68
|
procList?(): ProcessListing;
|
|
68
69
|
mountList?(): MountLine[];
|
|
69
70
|
}
|
|
@@ -156,7 +157,7 @@ export declare class KernelStreams {
|
|
|
156
157
|
socketStream(flags: number): ProcessStream;
|
|
157
158
|
nameTerminal(stream: ProcessStream): void;
|
|
158
159
|
private nameStream;
|
|
159
|
-
nameDevice(stream: ProcessStream, kind: 'sealed' | 'clipboard'): void;
|
|
160
|
+
nameDevice(stream: ProcessStream, kind: 'sealed' | 'clipboard' | 'embedder'): void;
|
|
160
161
|
private listSealed;
|
|
161
162
|
private openNode;
|
|
162
163
|
private readonly reporting;
|
|
@@ -28,6 +28,7 @@ export type WasiForkFd = {
|
|
|
28
28
|
};
|
|
29
29
|
export declare const SEALED_PATH = "/dev/sealed";
|
|
30
30
|
export declare const CLIPBOARD_PATH = "/dev/clipboard";
|
|
31
|
+
export declare const EMBEDDER_PATH = "/dev/embedder";
|
|
31
32
|
export declare function deviceOf(path: string): Device | undefined;
|
|
32
33
|
export declare class WasiFds {
|
|
33
34
|
private readonly table;
|
package/dist/types/serve.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type LockManagerLike } from './client/protocol.js';
|
|
|
2
2
|
import { type MetaStore } from './fs/meta.js';
|
|
3
3
|
import { type ProtectInit } from './fs/protect.js';
|
|
4
4
|
import { type UsersMode } from './fs/types.js';
|
|
5
|
+
import type { EmbedderKindPolicy } from './kernel/embedder.js';
|
|
5
6
|
import type { WasmWorkerLike } from './kernel/host.js';
|
|
6
7
|
import type { RouteTable } from './kernel/net/routes.js';
|
|
7
8
|
import type { RealmTransportTraits } from './kernel/net/transport.js';
|
|
@@ -42,6 +43,7 @@ export interface InitRequest {
|
|
|
42
43
|
denials?: boolean;
|
|
43
44
|
sealed?: boolean;
|
|
44
45
|
clipboard?: boolean;
|
|
46
|
+
requests?: Record<string, EmbedderKindPolicy>;
|
|
45
47
|
approve?: boolean;
|
|
46
48
|
processMounts?: boolean | 'ask';
|
|
47
49
|
cdp?: boolean;
|
|
@@ -85,6 +87,7 @@ export interface ConnectRequest {
|
|
|
85
87
|
op: 'connect';
|
|
86
88
|
user?: string | number;
|
|
87
89
|
tag?: string;
|
|
90
|
+
requests?: Record<string, EmbedderKindPolicy> | 'attach';
|
|
88
91
|
}
|
|
89
92
|
export type UsersRequest = {
|
|
90
93
|
id: number;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-ecoverse/slicc-kernel",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.153.0",
|
|
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,7 +64,7 @@
|
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
66
|
"@ai-ecoverse/py-numpy": "2.5.4-4",
|
|
67
|
-
"@ai-ecoverse/slicc-cdp": "1.39.
|
|
67
|
+
"@ai-ecoverse/slicc-cdp": "1.39.2",
|
|
68
68
|
"@ai-ecoverse/slicc-node": "2.5.2",
|
|
69
69
|
"@ai-ecoverse/slicc-scrub": "1.1.0",
|
|
70
70
|
"@ai-ecoverse/slicc-shared-web": "2.11.3",
|