@ai-ecoverse/slicc-kernel 1.102.6 → 1.103.1
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 +3 -3
- package/dist/index.js.map +2 -2
- package/dist/kernel-worker.js +118 -29
- package/dist/kernel-worker.js.map +4 -4
- package/dist/meta.js.map +2 -2
- package/dist/node-process-worker.js +29 -44
- package/dist/node-process-worker.js.map +3 -3
- package/dist/node.js +123 -34
- package/dist/node.js.map +4 -4
- package/dist/process-worker.js +44 -59
- package/dist/process-worker.js.map +3 -3
- package/dist/types/body-idle.d.ts +3 -0
- package/dist/types/bytes.d.ts +1 -0
- package/dist/types/cdp/facade.d.ts +27 -0
- package/dist/types/cdp/hosts.d.ts +14 -0
- package/dist/types/cdp/port.d.ts +24 -0
- package/dist/types/cdp/types.d.ts +12 -0
- package/dist/types/cdp/websocket.d.ts +61 -0
- package/dist/types/client/attach.d.ts +132 -0
- package/dist/types/client/dial-stream.d.ts +23 -0
- package/dist/types/client/loopback-fetch.d.ts +5 -0
- package/dist/types/client/protocol.d.ts +153 -0
- package/dist/types/client/serve-client.d.ts +18 -0
- package/dist/types/clipboard-relay.d.ts +25 -0
- package/dist/types/commands.d.ts +38 -0
- package/dist/types/cron/clock.d.ts +13 -0
- package/dist/types/driver.d.ts +3 -0
- package/dist/types/facade/hosts.d.ts +12 -0
- package/dist/types/facade/port.d.ts +16 -0
- package/dist/types/facade/types.d.ts +23 -0
- package/dist/types/fs/access.d.ts +29 -0
- package/dist/types/fs/attest.d.ts +41 -0
- package/dist/types/fs/changes.d.ts +19 -0
- package/dist/types/fs/commands.d.ts +4 -0
- package/dist/types/fs/dac.d.ts +64 -0
- package/dist/types/fs/dev-removal.d.ts +9 -0
- package/dist/types/fs/fresh-modules.d.ts +9 -0
- package/dist/types/fs/integrity.d.ts +53 -0
- package/dist/types/fs/meta.d.ts +86 -0
- package/dist/types/fs/opfs.d.ts +141 -0
- package/dist/types/fs/owners.d.ts +17 -0
- package/dist/types/fs/pages.d.ts +41 -0
- package/dist/types/fs/path-map.d.ts +16 -0
- package/dist/types/fs/physical-path.d.ts +14 -0
- package/dist/types/fs/protect.d.ts +27 -0
- package/dist/types/fs/ranged.d.ts +73 -0
- package/dist/types/fs/remote.d.ts +45 -0
- package/dist/types/fs/types.d.ts +117 -0
- package/dist/types/fs/unlinked.d.ts +75 -0
- package/dist/types/fs/view.d.ts +1 -0
- package/dist/types/fs/walk.d.ts +12 -0
- package/dist/types/fs/watch.d.ts +23 -0
- package/dist/types/index.d.ts +159 -0
- package/dist/types/integrity-relay.d.ts +18 -0
- package/dist/types/kernel/children.d.ts +90 -0
- package/dist/types/kernel/clipboard.d.ts +49 -0
- package/dist/types/kernel/cpu-clock.d.ts +56 -0
- package/dist/types/kernel/cred.d.ts +17 -0
- package/dist/types/kernel/dgram.d.ts +56 -0
- package/dist/types/kernel/dial.d.ts +20 -0
- package/dist/types/kernel/epoll.d.ts +67 -0
- package/dist/types/kernel/eventfd.d.ts +19 -0
- package/dist/types/kernel/exec-ticket.d.ts +25 -0
- package/dist/types/kernel/fd-table.d.ts +107 -0
- package/dist/types/kernel/host-ops.d.ts +98 -0
- package/dist/types/kernel/host.d.ts +116 -0
- package/dist/types/kernel/jobs.d.ts +50 -0
- package/dist/types/kernel/locks.d.ts +40 -0
- package/dist/types/kernel/net/datagram-wire.d.ts +8 -0
- package/dist/types/kernel/net/http-syscalls.d.ts +58 -0
- package/dist/types/kernel/net/http1.d.ts +48 -0
- package/dist/types/kernel/net/loopback-names.d.ts +14 -0
- package/dist/types/kernel/net/loopback-transport.d.ts +13 -0
- package/dist/types/kernel/net/network.d.ts +29 -0
- package/dist/types/kernel/net/proxy-service.d.ts +70 -0
- package/dist/types/kernel/net/realm-ca.d.ts +28 -0
- package/dist/types/kernel/net/redirect-hops.d.ts +5 -0
- package/dist/types/kernel/net/remote-transport.d.ts +98 -0
- package/dist/types/kernel/net/resolver.d.ts +29 -0
- package/dist/types/kernel/net/routes.d.ts +15 -0
- package/dist/types/kernel/net/tls-engine.d.ts +46 -0
- package/dist/types/kernel/net/tls-tunnel.d.ts +35 -0
- package/dist/types/kernel/net/transport.d.ts +64 -0
- package/dist/types/kernel/net/uplink-socket.d.ts +11 -0
- package/dist/types/kernel/net/uplink.d.ts +163 -0
- package/dist/types/kernel/net/ws-queue.d.ts +21 -0
- package/dist/types/kernel/net/ws-syscalls.d.ts +45 -0
- package/dist/types/kernel/net/x509.d.ts +34 -0
- package/dist/types/kernel/pipe.d.ts +29 -0
- package/dist/types/kernel/proc-info.d.ts +44 -0
- package/dist/types/kernel/process.d.ts +525 -0
- package/dist/types/kernel/protocol.d.ts +126 -0
- package/dist/types/kernel/pty.d.ts +84 -0
- package/dist/types/kernel/run-child.d.ts +39 -0
- package/dist/types/kernel/scrub-file.d.ts +13 -0
- package/dist/types/kernel/sealed.d.ts +74 -0
- package/dist/types/kernel/select.d.ts +7 -0
- package/dist/types/kernel/sem.d.ts +72 -0
- package/dist/types/kernel/settling.d.ts +16 -0
- package/dist/types/kernel/signals.d.ts +44 -0
- package/dist/types/kernel/socket-nodes.d.ts +20 -0
- package/dist/types/kernel/socket-syscalls.d.ts +76 -0
- package/dist/types/kernel/socket.d.ts +131 -0
- package/dist/types/kernel/timer.d.ts +4 -0
- package/dist/types/kernel/tty.d.ts +53 -0
- package/dist/types/kernel/vfs-file.d.ts +149 -0
- package/dist/types/launcher.d.ts +359 -0
- package/dist/types/local-proxy-transport.d.ts +39 -0
- package/dist/types/meta.d.ts +11 -0
- package/dist/types/mount/chunked.d.ts +9 -0
- package/dist/types/mount/connection.d.ts +35 -0
- package/dist/types/mount/driver.d.ts +50 -0
- package/dist/types/mount/fsa.d.ts +26 -0
- package/dist/types/mount/fstab.d.ts +17 -0
- package/dist/types/mount/host.d.ts +24 -0
- package/dist/types/mount/hostfs.d.ts +129 -0
- package/dist/types/mount/media.d.ts +8 -0
- package/dist/types/mount/medium.d.ts +12 -0
- package/dist/types/mount/mount-fs.d.ts +136 -0
- package/dist/types/mount/protocol.d.ts +140 -0
- package/dist/types/mount/syscall.d.ts +27 -0
- package/dist/types/mount/tmpfs.d.ts +2 -0
- package/dist/types/node/loopback.d.ts +11 -0
- package/dist/types/node/memory-root.d.ts +2 -0
- package/dist/types/node/ws-diagnose.d.ts +4 -0
- package/dist/types/node.d.ts +85 -0
- package/dist/types/process/fd-metadata.d.ts +4 -0
- package/dist/types/process/js/async-sab.d.ts +15 -0
- package/dist/types/process/js/js-children.d.ts +63 -0
- package/dist/types/process/js/js-context.d.ts +133 -0
- package/dist/types/process/js/js-dev.d.ts +50 -0
- package/dist/types/process/js/js-exit.d.ts +15 -0
- package/dist/types/process/js/js-fetch.d.ts +2 -0
- package/dist/types/process/js/js-io.d.ts +81 -0
- package/dist/types/process/js/js-kernel.d.ts +61 -0
- package/dist/types/process/js/js-net.d.ts +42 -0
- package/dist/types/process/js/js-proc.d.ts +31 -0
- package/dist/types/process/js/js-run.d.ts +35 -0
- package/dist/types/process/js/js-sync.d.ts +86 -0
- package/dist/types/process/js/js-tty.d.ts +30 -0
- package/dist/types/process/js/js-websocket.d.ts +21 -0
- package/dist/types/process/kernel-streams.d.ts +196 -0
- package/dist/types/process/process-fds.d.ts +95 -0
- package/dist/types/process/process-locks.d.ts +29 -0
- package/dist/types/process/process-pty.d.ts +20 -0
- package/dist/types/process/process-signals.d.ts +33 -0
- package/dist/types/process/procfs.d.ts +41 -0
- package/dist/types/process/wasi/dylink.d.ts +9 -0
- package/dist/types/process/wasi/slicc-lock.d.ts +26 -0
- package/dist/types/process/wasi/slicc-sem.d.ts +3 -0
- package/dist/types/process/wasi/wasi-abi.d.ts +156 -0
- package/dist/types/process/wasi/wasi-fds.d.ts +130 -0
- package/dist/types/process/wasi/wasi-files.d.ts +99 -0
- package/dist/types/process/wasi/wasi-host.d.ts +104 -0
- package/dist/types/process/wasi/wasi-memory.d.ts +16 -0
- package/dist/types/process/wasi/wasi-module.d.ts +13 -0
- package/dist/types/process/wasi/wasi-poll.d.ts +13 -0
- package/dist/types/process/wasi/wasi-procfs.d.ts +36 -0
- package/dist/types/process/wasi/wasi-sigmask.d.ts +19 -0
- package/dist/types/process/wasi/wasi-signals.d.ts +43 -0
- package/dist/types/process/wasi/wasi-termios.d.ts +10 -0
- package/dist/types/process/wasi/wasix-fork.d.ts +63 -0
- package/dist/types/process/wasi/wasix-linker.d.ts +108 -0
- package/dist/types/process/wasi/wasix-sockets.d.ts +9 -0
- package/dist/types/process/wasi/wasix-trampoline.d.ts +18 -0
- package/dist/types/process/wasi/wasm-functypes.d.ts +25 -0
- package/dist/types/process/wasi-errno.d.ts +1 -0
- package/dist/types/realm/emscripten-vfs-hook.d.ts +19 -0
- package/dist/types/realm/live-vfs-fs.d.ts +186 -0
- package/dist/types/realm/sync-fs-dispatch.d.ts +27 -0
- package/dist/types/realm/sync-fs-token-registry.d.ts +36 -0
- package/dist/types/realm/sync-fs-wire.d.ts +119 -0
- package/dist/types/realm/sync-sab-bridge.d.ts +21 -0
- package/dist/types/realm/sync-sab-responder.d.ts +16 -0
- package/dist/types/realm/sync-sab-wire.d.ts +64 -0
- package/dist/types/sealed-relay.d.ts +26 -0
- package/dist/types/serve.d.ts +190 -0
- package/dist/types/sudo-command.d.ts +4 -0
- package/dist/types/sudo.d.ts +105 -0
- package/dist/types/testing.d.ts +46 -0
- package/dist/types/transport.d.ts +25 -0
- package/dist/types/users.d.ts +86 -0
- package/dist/types/version.d.ts +3 -0
- package/dist/types/websocket-transport.d.ts +12 -0
- package/package.json +24 -8
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import type { Datagram, InetAddr, KernelDgram } from './dgram.js';
|
|
2
|
+
import { type KernelFile, type PollState } from './fd-table.js';
|
|
3
|
+
import { type Destination, Routes } from './net/routes.js';
|
|
4
|
+
import type { NetworkUplink } from './net/uplink.js';
|
|
5
|
+
import { KernelPipe } from './pipe.js';
|
|
6
|
+
import type { SealedCaller } from './sealed.js';
|
|
7
|
+
export type SockAddr = {
|
|
8
|
+
family: 'inet';
|
|
9
|
+
host: string;
|
|
10
|
+
port: number;
|
|
11
|
+
} | {
|
|
12
|
+
family: 'unix';
|
|
13
|
+
path: string;
|
|
14
|
+
};
|
|
15
|
+
export type SocketDomain = SockAddr['family'];
|
|
16
|
+
export declare const SHUT_RD = 0;
|
|
17
|
+
export declare const SHUT_WR = 1;
|
|
18
|
+
export declare const SHUT_RDWR = 2;
|
|
19
|
+
export declare const DIAL_TIMEOUT_MS = 30000;
|
|
20
|
+
export interface UplinkRoute {
|
|
21
|
+
uplink: NetworkUplink;
|
|
22
|
+
routes: Routes;
|
|
23
|
+
timeoutMs?: number;
|
|
24
|
+
}
|
|
25
|
+
export declare function isLoopback(host: string): boolean;
|
|
26
|
+
export declare class Changes {
|
|
27
|
+
private waiters;
|
|
28
|
+
wait(signal?: AbortSignal): Promise<void>;
|
|
29
|
+
wake(): void;
|
|
30
|
+
}
|
|
31
|
+
interface Link {
|
|
32
|
+
rx: KernelPipe;
|
|
33
|
+
tx: KernelPipe;
|
|
34
|
+
}
|
|
35
|
+
export interface PeerCred {
|
|
36
|
+
pid: number;
|
|
37
|
+
uid: number;
|
|
38
|
+
gid: number;
|
|
39
|
+
}
|
|
40
|
+
export type ConnectorStamp = SealedCaller;
|
|
41
|
+
export interface SocketName {
|
|
42
|
+
key: string;
|
|
43
|
+
typed: boolean;
|
|
44
|
+
}
|
|
45
|
+
export declare class KernelSocket implements KernelFile {
|
|
46
|
+
private readonly net;
|
|
47
|
+
readonly domain: SocketDomain;
|
|
48
|
+
private state;
|
|
49
|
+
private dialing;
|
|
50
|
+
private failed;
|
|
51
|
+
private reset;
|
|
52
|
+
local: SockAddr | undefined;
|
|
53
|
+
peer: SockAddr | undefined;
|
|
54
|
+
peerCred: PeerCred | undefined;
|
|
55
|
+
peerStamp: ConnectorStamp | undefined;
|
|
56
|
+
private listenerCred;
|
|
57
|
+
private link;
|
|
58
|
+
private readShut;
|
|
59
|
+
private writeShut;
|
|
60
|
+
private readonly queue;
|
|
61
|
+
private backlog;
|
|
62
|
+
private boundAt;
|
|
63
|
+
named: SocketName | undefined;
|
|
64
|
+
private readonly changes;
|
|
65
|
+
private readonly room;
|
|
66
|
+
private readonly options;
|
|
67
|
+
constructor(net: LoopbackNet, domain: SocketDomain);
|
|
68
|
+
attach(link: Link): void;
|
|
69
|
+
get listening(): boolean;
|
|
70
|
+
get unconnected(): boolean;
|
|
71
|
+
private connection;
|
|
72
|
+
read(max: number, signal?: AbortSignal): Promise<Uint8Array>;
|
|
73
|
+
peek(max: number, signal?: AbortSignal): Promise<Uint8Array>;
|
|
74
|
+
write(bytes: Uint8Array, signal?: AbortSignal): Promise<number>;
|
|
75
|
+
poll(): PollState;
|
|
76
|
+
changed(signal?: AbortSignal): Promise<void>;
|
|
77
|
+
bindable(addr: SockAddr): void;
|
|
78
|
+
bind(addr: SockAddr, kernel?: boolean, name?: SocketName): void;
|
|
79
|
+
listen(backlog: number, cred?: PeerCred): void;
|
|
80
|
+
accept(signal?: AbortSignal, nonblock?: boolean): Promise<KernelSocket>;
|
|
81
|
+
offer(server: KernelSocket): boolean;
|
|
82
|
+
get full(): boolean;
|
|
83
|
+
waitRoom(signal: AbortSignal): Promise<void>;
|
|
84
|
+
connect(addr: SockAddr, viaUplink?: boolean, cred?: PeerCred, stamp?: ConnectorStamp, waits?: boolean, name?: SocketName): Promise<void> | undefined;
|
|
85
|
+
private join;
|
|
86
|
+
private queued;
|
|
87
|
+
private dial;
|
|
88
|
+
private unlink;
|
|
89
|
+
shutdown(how: number): void;
|
|
90
|
+
getOption(level: number, name: number): number;
|
|
91
|
+
setOption(level: number, name: number, value: number): void;
|
|
92
|
+
close(): void;
|
|
93
|
+
static pair(net: LoopbackNet, domain: SocketDomain, cred?: PeerCred): [KernelSocket, KernelSocket];
|
|
94
|
+
}
|
|
95
|
+
export declare function canonicalHost(host: string): string;
|
|
96
|
+
export declare class LoopbackNet {
|
|
97
|
+
private readonly bound;
|
|
98
|
+
private readonly dgrams;
|
|
99
|
+
private readonly activators;
|
|
100
|
+
private readonly internal;
|
|
101
|
+
private readonly reserved;
|
|
102
|
+
private readonly facades;
|
|
103
|
+
private nextEphemeral;
|
|
104
|
+
private route;
|
|
105
|
+
useUplink(route: UplinkRoute): void;
|
|
106
|
+
uplinkFor(host: string): UplinkRoute | undefined;
|
|
107
|
+
destination(host: string): Destination;
|
|
108
|
+
bindDgram(socket: KernelDgram, addr: SockAddr, kernel?: boolean): InetAddr;
|
|
109
|
+
releaseDgram(addr: InetAddr, socket: KernelDgram): void;
|
|
110
|
+
deliverDgram(port: number, datagram: Datagram): boolean;
|
|
111
|
+
private bindable;
|
|
112
|
+
kernelOnly(port: number, reserve?: boolean): boolean;
|
|
113
|
+
reserve(port: number): void;
|
|
114
|
+
facade(port: number, name: string): void;
|
|
115
|
+
facadeAt(addr: SockAddr): string | undefined;
|
|
116
|
+
activate(addr: SockAddr, start: () => void): void;
|
|
117
|
+
socket(domain: SocketDomain): KernelSocket;
|
|
118
|
+
listen(addr: SockAddr, backlog?: number): KernelSocket;
|
|
119
|
+
backlogWaitMs: number;
|
|
120
|
+
connect(addr: SockAddr): KernelSocket;
|
|
121
|
+
bind(socket: KernelSocket, addr: SockAddr, kernel?: boolean, name?: SocketName): SockAddr;
|
|
122
|
+
release(addr: SockAddr, socket: KernelSocket, name?: SocketName): void;
|
|
123
|
+
target(addr: SockAddr, name?: SocketName): KernelSocket;
|
|
124
|
+
private ephemeral;
|
|
125
|
+
}
|
|
126
|
+
export declare function loopbackNet(owner: string): LoopbackNet;
|
|
127
|
+
export declare function ownerKey(owner: {
|
|
128
|
+
kind: string;
|
|
129
|
+
scoopJid?: string;
|
|
130
|
+
} | undefined): string;
|
|
131
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const TIMER_MAX_MS = 2147483647;
|
|
2
|
+
export declare function timerAt(deadline: number, fire: () => void): () => void;
|
|
3
|
+
export declare function timerAfter(ms: number, fire: () => void): () => void;
|
|
4
|
+
export declare function repeating(first: number, every: number, fire: () => void): () => void;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { Perm } from '../fs/types.js';
|
|
2
|
+
import { OpenFile } from './fd-table.js';
|
|
3
|
+
export interface Termios {
|
|
4
|
+
c_iflag: number;
|
|
5
|
+
c_oflag: number;
|
|
6
|
+
c_cflag: number;
|
|
7
|
+
c_lflag: number;
|
|
8
|
+
c_cc: number[];
|
|
9
|
+
}
|
|
10
|
+
export interface TtyScreen {
|
|
11
|
+
write(bytes: Uint8Array): void;
|
|
12
|
+
}
|
|
13
|
+
export declare function defaultTermios(): Termios;
|
|
14
|
+
export declare class KernelTty {
|
|
15
|
+
private termios;
|
|
16
|
+
private cols;
|
|
17
|
+
private rows;
|
|
18
|
+
private readable;
|
|
19
|
+
private line;
|
|
20
|
+
private waiters;
|
|
21
|
+
private hungUp;
|
|
22
|
+
name?: string;
|
|
23
|
+
owner?: Perm;
|
|
24
|
+
onRead?: () => void;
|
|
25
|
+
private readers;
|
|
26
|
+
private readonly screen;
|
|
27
|
+
private readonly signal;
|
|
28
|
+
constructor(screen: TtyScreen, signal: (sig: number) => void);
|
|
29
|
+
receive(bytes: Uint8Array): void;
|
|
30
|
+
resize(cols: number, rows: number): void;
|
|
31
|
+
hangup(): void;
|
|
32
|
+
signalHangup(): void;
|
|
33
|
+
setSize(cols: number, rows: number): void;
|
|
34
|
+
tcgets(): Termios;
|
|
35
|
+
tcsets(termios: Termios, flush?: boolean): void;
|
|
36
|
+
winsize(): [number, number];
|
|
37
|
+
file(): OpenFile;
|
|
38
|
+
private get canonical();
|
|
39
|
+
private cc;
|
|
40
|
+
private key;
|
|
41
|
+
private signalKey;
|
|
42
|
+
private edit;
|
|
43
|
+
private lastWordLength;
|
|
44
|
+
private lastCharLength;
|
|
45
|
+
private rubOut;
|
|
46
|
+
private echo;
|
|
47
|
+
private output;
|
|
48
|
+
get reading(): boolean;
|
|
49
|
+
private read;
|
|
50
|
+
private take;
|
|
51
|
+
private changed;
|
|
52
|
+
private wake;
|
|
53
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { type AsyncRangedIo } from '../fs/ranged.js';
|
|
2
|
+
import { type KernelFs, type NewOwner, type OwnerChange } from '../fs/types.js';
|
|
3
|
+
import type { KeptFile, UnlinkHolder } from '../fs/unlinked.js';
|
|
4
|
+
import { OpenFile } from './fd-table.js';
|
|
5
|
+
export interface VfsFileFs extends Partial<AsyncRangedIo> {
|
|
6
|
+
readFileBuffer(path: string): Promise<Uint8Array>;
|
|
7
|
+
writeFile(path: string, content: Uint8Array, owner?: NewOwner): Promise<void>;
|
|
8
|
+
mayChange?(path: string, follow: boolean, whole?: boolean): Promise<void>;
|
|
9
|
+
stat?(path: string): Promise<{
|
|
10
|
+
readonly?: boolean;
|
|
11
|
+
maxFile?: number;
|
|
12
|
+
size?: number;
|
|
13
|
+
ranged?: boolean;
|
|
14
|
+
version?: string;
|
|
15
|
+
ino?: number;
|
|
16
|
+
dev?: number;
|
|
17
|
+
nlink?: number;
|
|
18
|
+
}>;
|
|
19
|
+
readlink?(path: string): Promise<string>;
|
|
20
|
+
lstat?(path: string): Promise<unknown>;
|
|
21
|
+
realpath?(path: string, follow: boolean): Promise<string>;
|
|
22
|
+
chown?(path: string, change: OwnerChange): Promise<void>;
|
|
23
|
+
chmod?(path: string, mode: number): Promise<void>;
|
|
24
|
+
links?(path: string): boolean;
|
|
25
|
+
exclusive?<T>(path: string, run: () => Promise<T>): Promise<T>;
|
|
26
|
+
}
|
|
27
|
+
export interface VfsFileOptions {
|
|
28
|
+
path: string;
|
|
29
|
+
flags: number;
|
|
30
|
+
position: number;
|
|
31
|
+
contents?: Uint8Array;
|
|
32
|
+
orphan?: boolean;
|
|
33
|
+
dirty?: boolean;
|
|
34
|
+
pin?: VersionPin;
|
|
35
|
+
truncate?: boolean;
|
|
36
|
+
create?: boolean;
|
|
37
|
+
id?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface VersionPin {
|
|
40
|
+
version: string;
|
|
41
|
+
size: number;
|
|
42
|
+
}
|
|
43
|
+
export declare const WRITEBACK_MS = 250;
|
|
44
|
+
export declare class VfsNode {
|
|
45
|
+
private data;
|
|
46
|
+
private ranged;
|
|
47
|
+
private readonly pin;
|
|
48
|
+
private length;
|
|
49
|
+
private dirty;
|
|
50
|
+
private queue;
|
|
51
|
+
private writeBack;
|
|
52
|
+
private writeBackCost;
|
|
53
|
+
opens: number;
|
|
54
|
+
writers: number;
|
|
55
|
+
private missing;
|
|
56
|
+
private revoked;
|
|
57
|
+
private readonly fs;
|
|
58
|
+
path: string;
|
|
59
|
+
orphaned: boolean;
|
|
60
|
+
id: string | undefined;
|
|
61
|
+
onDirty: (() => void) | undefined;
|
|
62
|
+
onDirtyState: ((on: boolean) => void) | undefined;
|
|
63
|
+
private counted;
|
|
64
|
+
recount(): void;
|
|
65
|
+
constructor(fs: VfsFileFs, path: string, contents?: Uint8Array, orphaned?: boolean, dirty?: boolean, pin?: VersionPin);
|
|
66
|
+
serial<T>(op: () => Promise<T>): Promise<T>;
|
|
67
|
+
revoke(): void;
|
|
68
|
+
private prepare;
|
|
69
|
+
keep(): Promise<void>;
|
|
70
|
+
load(): Promise<Uint8Array>;
|
|
71
|
+
holds(): boolean;
|
|
72
|
+
replace(contents: Uint8Array): void;
|
|
73
|
+
materialize(): Promise<void>;
|
|
74
|
+
size(): Promise<number>;
|
|
75
|
+
pread(max: number, at: number): Promise<Uint8Array>;
|
|
76
|
+
private cap;
|
|
77
|
+
limit(): Promise<number | undefined>;
|
|
78
|
+
private seen;
|
|
79
|
+
private note;
|
|
80
|
+
known(): number | undefined;
|
|
81
|
+
private fits;
|
|
82
|
+
renamedTo(path: string): void;
|
|
83
|
+
pwrite(bytes: Uint8Array, at: number): Promise<number>;
|
|
84
|
+
truncate(size: number): Promise<void>;
|
|
85
|
+
private markDirty;
|
|
86
|
+
private ensure;
|
|
87
|
+
flush(): Promise<void>;
|
|
88
|
+
}
|
|
89
|
+
export declare class VfsNodes implements UnlinkHolder {
|
|
90
|
+
private readonly byPath;
|
|
91
|
+
private readonly kept;
|
|
92
|
+
private readonly byId;
|
|
93
|
+
keepsOnDisk: boolean;
|
|
94
|
+
changed: ((path: string) => void) | undefined;
|
|
95
|
+
dirtied: ((delta: number) => void) | undefined;
|
|
96
|
+
private readonly fs;
|
|
97
|
+
readonly entries: Map<string, Promise<unknown>>;
|
|
98
|
+
private readonly onClosed;
|
|
99
|
+
constructor(fs: VfsFileFs, onClosed?: (path: string) => void, entries?: Map<string, Promise<unknown>>);
|
|
100
|
+
onEntry<T>(path: string, op: () => Promise<T>): Promise<T>;
|
|
101
|
+
entryKey(path: string): Promise<string>;
|
|
102
|
+
targetKey(path: string): Promise<string>;
|
|
103
|
+
private real;
|
|
104
|
+
createExclusive(path: string, owner?: NewOwner): Promise<void>;
|
|
105
|
+
private identity;
|
|
106
|
+
identify(path: string): Promise<string | undefined>;
|
|
107
|
+
flushLinked(path: string): Promise<void>;
|
|
108
|
+
linked(from: string, to: string): Promise<void>;
|
|
109
|
+
private know;
|
|
110
|
+
private namesOf;
|
|
111
|
+
private forget;
|
|
112
|
+
private orphan;
|
|
113
|
+
private dropName;
|
|
114
|
+
holdsAny(): boolean;
|
|
115
|
+
private epoch;
|
|
116
|
+
private readonly plain;
|
|
117
|
+
reshaped(): void;
|
|
118
|
+
plainAt(path: string): boolean;
|
|
119
|
+
get shape(): number;
|
|
120
|
+
notePlain(path: string, shape: number): void;
|
|
121
|
+
holdsName(name: string): boolean;
|
|
122
|
+
holdsLinked(): boolean;
|
|
123
|
+
holdingId(id: string): VfsNode | undefined;
|
|
124
|
+
holding(path: string): VfsNode | undefined;
|
|
125
|
+
private named;
|
|
126
|
+
private create;
|
|
127
|
+
open(path: string, pin?: VersionPin, writable?: boolean, id?: string): VfsNode;
|
|
128
|
+
adopt(path: string, contents: Uint8Array, dirty: boolean, writable?: boolean, id?: string): VfsNode;
|
|
129
|
+
holds(prefix: string): boolean;
|
|
130
|
+
writes(prefix: string): boolean;
|
|
131
|
+
closed(node: VfsNode, writable?: boolean): void;
|
|
132
|
+
held(): Iterable<string>;
|
|
133
|
+
owns(): boolean;
|
|
134
|
+
isKept(): boolean;
|
|
135
|
+
keep(path: string, file: KeptFile): void;
|
|
136
|
+
unkeep(path: string, file: KeptFile): void;
|
|
137
|
+
flush(path: string): Promise<void>;
|
|
138
|
+
unlinking(path: string): Promise<void>;
|
|
139
|
+
revoke(prefix: string): void;
|
|
140
|
+
unlinked(path: string): void;
|
|
141
|
+
renamed(from: string, to: string): void;
|
|
142
|
+
}
|
|
143
|
+
export declare function present(fs: VfsFileFs, path: string, follow?: boolean): Promise<boolean>;
|
|
144
|
+
export declare function refuseReadonly(fs: VfsFileFs, path: string, flags: number, opts?: {
|
|
145
|
+
create?: boolean;
|
|
146
|
+
truncate?: boolean;
|
|
147
|
+
}): Promise<void>;
|
|
148
|
+
export declare function keepingOpen(fs: KernelFs, nodes: VfsNodes, changed?: (path: string) => void): KernelFs;
|
|
149
|
+
export declare function vfsFile(fs: VfsFileFs, opts: VfsFileOptions, nodes?: VfsNodes): OpenFile;
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
import { CdpHosts } from './cdp/hosts.js';
|
|
2
|
+
import type { CdpHook } from './cdp/types.js';
|
|
3
|
+
import { type Abi, type Command } from './commands.js';
|
|
4
|
+
import { FacadeHosts } from './facade/hosts.js';
|
|
5
|
+
import type { FacadeSpecs } from './facade/types.js';
|
|
6
|
+
import { type Attestation } from './fs/attest.js';
|
|
7
|
+
import { Dac, type DenialHook } from './fs/dac.js';
|
|
8
|
+
import { type Protection } from './fs/protect.js';
|
|
9
|
+
import type { KernelFs, UsersMode } from './fs/types.js';
|
|
10
|
+
import { type UnlinkOwner } from './fs/unlinked.js';
|
|
11
|
+
import { FsWatchers } from './fs/watch.js';
|
|
12
|
+
import { type ClipboardHook } from './kernel/clipboard.js';
|
|
13
|
+
import type { CpuTimes } from './kernel/cpu-clock.js';
|
|
14
|
+
import { type Cred } from './kernel/cred.js';
|
|
15
|
+
import { type WasmWorkerLike } from './kernel/host.js';
|
|
16
|
+
import type { CaStore } from './kernel/net/realm-ca.js';
|
|
17
|
+
import { Resolver } from './kernel/net/resolver.js';
|
|
18
|
+
import { Routes, type RouteTable } from './kernel/net/routes.js';
|
|
19
|
+
import type { RealmTransport } from './kernel/net/transport.js';
|
|
20
|
+
import type { NetworkUplink } from './kernel/net/uplink.js';
|
|
21
|
+
import type { ProcessInfo } from './kernel/proc-info.js';
|
|
22
|
+
import { type SealedCaller, type SealedHook } from './kernel/sealed.js';
|
|
23
|
+
import { LoopbackNet } from './kernel/socket.js';
|
|
24
|
+
import { type MediumHandle } from './mount/fsa.js';
|
|
25
|
+
import { type FstabResult } from './mount/fstab.js';
|
|
26
|
+
import { type FetchLike, type HostfsGrantHook, type HostfsTiming } from './mount/hostfs.js';
|
|
27
|
+
import { type MediaStore } from './mount/media.js';
|
|
28
|
+
import { type MountEntry, type MountSpec, MountTable } from './mount/mount-fs.js';
|
|
29
|
+
import { type ProcessMountPolicy } from './mount/syscall.js';
|
|
30
|
+
import { type ApproveHook } from './sudo.js';
|
|
31
|
+
import { type Account, UserDb } from './users.js';
|
|
32
|
+
export interface LauncherOptions {
|
|
33
|
+
unlinkOwner?: UnlinkOwner;
|
|
34
|
+
fs: KernelFs;
|
|
35
|
+
createWorker: () => WasmWorkerLike;
|
|
36
|
+
modules?: string;
|
|
37
|
+
commands?: {
|
|
38
|
+
append?: readonly string[];
|
|
39
|
+
};
|
|
40
|
+
env?: Record<string, string>;
|
|
41
|
+
transport?: RealmTransport;
|
|
42
|
+
caStore?: CaStore;
|
|
43
|
+
createDriverWorker?: () => WasmWorkerLike;
|
|
44
|
+
media?: MediaStore;
|
|
45
|
+
onMountPending?: (pending: PendingMedium) => void;
|
|
46
|
+
hostfs?: HostfsGrantHook;
|
|
47
|
+
hostfsFetch?: FetchLike;
|
|
48
|
+
hostfsTiming?: HostfsTiming;
|
|
49
|
+
processMounts?: ProcessMountPolicy;
|
|
50
|
+
fstabRetries?: readonly number[];
|
|
51
|
+
cdp?: CdpHook;
|
|
52
|
+
facades?: FacadeSpecs;
|
|
53
|
+
uplink?: NetworkUplink;
|
|
54
|
+
hostname?: string;
|
|
55
|
+
users?: UsersMode;
|
|
56
|
+
onDenial?: DenialHook;
|
|
57
|
+
sealed?: SealedHook;
|
|
58
|
+
clipboard?: ClipboardHook;
|
|
59
|
+
approve?: ApproveHook;
|
|
60
|
+
sudoTimeoutMs?: number;
|
|
61
|
+
protect?: Protection;
|
|
62
|
+
}
|
|
63
|
+
export interface PendingMedium {
|
|
64
|
+
target: string;
|
|
65
|
+
source: string;
|
|
66
|
+
handle?: MediumHandle;
|
|
67
|
+
}
|
|
68
|
+
export interface RunOptions {
|
|
69
|
+
cwd?: string;
|
|
70
|
+
env?: Record<string, string>;
|
|
71
|
+
stdin?: Uint8Array;
|
|
72
|
+
onStdout?: (bytes: Uint8Array) => void;
|
|
73
|
+
onStderr?: (bytes: Uint8Array) => void;
|
|
74
|
+
onStarted?: (pid: number) => void;
|
|
75
|
+
collect?: boolean;
|
|
76
|
+
pgid?: number;
|
|
77
|
+
user?: string | number | Account;
|
|
78
|
+
tag?: string;
|
|
79
|
+
}
|
|
80
|
+
export interface TerminalOptions {
|
|
81
|
+
cwd?: string;
|
|
82
|
+
env?: Record<string, string>;
|
|
83
|
+
cols?: number;
|
|
84
|
+
rows?: number;
|
|
85
|
+
user?: string | number | Account;
|
|
86
|
+
tag?: string;
|
|
87
|
+
onData: (bytes: Uint8Array) => void;
|
|
88
|
+
}
|
|
89
|
+
export interface TerminalSession {
|
|
90
|
+
pid: number;
|
|
91
|
+
exited: Promise<number>;
|
|
92
|
+
termsig(): number | undefined;
|
|
93
|
+
write(bytes: Uint8Array): void;
|
|
94
|
+
resize(cols: number, rows: number): void;
|
|
95
|
+
signal(sig: number): void;
|
|
96
|
+
close(): void;
|
|
97
|
+
}
|
|
98
|
+
export interface RunResult {
|
|
99
|
+
status: number;
|
|
100
|
+
signal?: number;
|
|
101
|
+
stdout: Uint8Array;
|
|
102
|
+
stderr: Uint8Array;
|
|
103
|
+
}
|
|
104
|
+
interface Target {
|
|
105
|
+
abi: Abi;
|
|
106
|
+
glue: string;
|
|
107
|
+
wasm: string;
|
|
108
|
+
argv0: string;
|
|
109
|
+
fixed?: true;
|
|
110
|
+
prefix?: string[];
|
|
111
|
+
env?: Record<string, string>;
|
|
112
|
+
unset?: string[];
|
|
113
|
+
imports?: string;
|
|
114
|
+
preopenRoot?: boolean;
|
|
115
|
+
asked?: string;
|
|
116
|
+
}
|
|
117
|
+
export declare function tagOption(tag: unknown): void;
|
|
118
|
+
export declare function expandDefaults(defaults: Readonly<Record<string, string>> | undefined, env: Readonly<Record<string, string>>): Record<string, string>;
|
|
119
|
+
export declare class Launcher {
|
|
120
|
+
readonly fs: KernelFs;
|
|
121
|
+
readonly processFs: KernelFs;
|
|
122
|
+
private readonly noLinksFs;
|
|
123
|
+
private readonly mounted;
|
|
124
|
+
private protection;
|
|
125
|
+
private readonly prefixes;
|
|
126
|
+
private readonly writerTags;
|
|
127
|
+
private readonly unguardedRoot;
|
|
128
|
+
private writers;
|
|
129
|
+
private readonly unlinkOwnerOption;
|
|
130
|
+
private readonly base;
|
|
131
|
+
private readonly createWorker;
|
|
132
|
+
private readonly modulesDir;
|
|
133
|
+
private readonly appended;
|
|
134
|
+
private readonly reportedRoots;
|
|
135
|
+
private readonly env;
|
|
136
|
+
private readonly catalogs;
|
|
137
|
+
private readonly ownCatalogs;
|
|
138
|
+
private readonly binfmts;
|
|
139
|
+
private scopes;
|
|
140
|
+
private unwatchScopes;
|
|
141
|
+
private readonly warned;
|
|
142
|
+
private readonly compiled;
|
|
143
|
+
private readonly texts;
|
|
144
|
+
private revocations;
|
|
145
|
+
private integrity;
|
|
146
|
+
private scannedFs;
|
|
147
|
+
private get scanned();
|
|
148
|
+
private readonly processes;
|
|
149
|
+
private readonly zombies;
|
|
150
|
+
private readonly orphans;
|
|
151
|
+
private readonly described;
|
|
152
|
+
private readonly creds;
|
|
153
|
+
private readonly tags;
|
|
154
|
+
private readonly links;
|
|
155
|
+
private readonly freshModules;
|
|
156
|
+
private readonly granted;
|
|
157
|
+
readonly users: UserDb;
|
|
158
|
+
private readonly sudoer;
|
|
159
|
+
private readonly jobs;
|
|
160
|
+
private readonly locks;
|
|
161
|
+
private readonly sems;
|
|
162
|
+
private readonly settling;
|
|
163
|
+
private readonly ptys;
|
|
164
|
+
readonly net: LoopbackNet;
|
|
165
|
+
readonly cdp: CdpHosts;
|
|
166
|
+
readonly facades: FacadeHosts;
|
|
167
|
+
private readonly ca;
|
|
168
|
+
readonly transport: RealmTransport;
|
|
169
|
+
readonly uplink: NetworkUplink | undefined;
|
|
170
|
+
readonly routes: Routes;
|
|
171
|
+
readonly resolver: Resolver;
|
|
172
|
+
readonly hostname: string;
|
|
173
|
+
readonly watchers: FsWatchers;
|
|
174
|
+
private readonly changes;
|
|
175
|
+
private readonly pnpmHome;
|
|
176
|
+
private readonly pnpmChain;
|
|
177
|
+
private pnpmMade;
|
|
178
|
+
private pnpmEpoch;
|
|
179
|
+
readonly mounts: MountTable;
|
|
180
|
+
private readonly createDriverWorker;
|
|
181
|
+
private readonly media;
|
|
182
|
+
private readonly onMountPending;
|
|
183
|
+
private readonly removable;
|
|
184
|
+
private readonly hostfs;
|
|
185
|
+
private readonly fstabRetries;
|
|
186
|
+
private readonly inserted;
|
|
187
|
+
private readonly openFiles;
|
|
188
|
+
private readonly deciding;
|
|
189
|
+
readonly identities: {
|
|
190
|
+
asked: number;
|
|
191
|
+
timedOut: number;
|
|
192
|
+
};
|
|
193
|
+
private readonly nodes;
|
|
194
|
+
private readonly unlinked;
|
|
195
|
+
private readonly held;
|
|
196
|
+
private readonly processMounts;
|
|
197
|
+
private readonly booting;
|
|
198
|
+
fstab: Promise<FstabResult[]>;
|
|
199
|
+
readonly usersMode: UsersMode;
|
|
200
|
+
readonly dac: Dac | undefined;
|
|
201
|
+
private readonly sealed;
|
|
202
|
+
private readonly scrubs;
|
|
203
|
+
private readonly clipboard;
|
|
204
|
+
private readonly rootFs;
|
|
205
|
+
private fileWatches;
|
|
206
|
+
private nextPid;
|
|
207
|
+
readonly boot: number;
|
|
208
|
+
private terminals;
|
|
209
|
+
constructor(options: LauncherOptions);
|
|
210
|
+
get owners(): boolean;
|
|
211
|
+
setRoutes(table: RouteTable): void;
|
|
212
|
+
private readonly traitsListeners;
|
|
213
|
+
private announcedTraits;
|
|
214
|
+
onTraits(listener: () => void): () => void;
|
|
215
|
+
updateTransportTraits(): boolean;
|
|
216
|
+
commands(scope?: string): Promise<Map<string, Command>>;
|
|
217
|
+
private ownCommands;
|
|
218
|
+
private interpreters;
|
|
219
|
+
private tiers;
|
|
220
|
+
private roots;
|
|
221
|
+
private rootOnlyPath;
|
|
222
|
+
private trustedAppended;
|
|
223
|
+
private resetCatalogs;
|
|
224
|
+
private userScopes;
|
|
225
|
+
private userCommandDir;
|
|
226
|
+
private scopeOf;
|
|
227
|
+
private commandAt;
|
|
228
|
+
resolve(file: string, argv0: string, cwd: string, scope?: string): Promise<Target | undefined>;
|
|
229
|
+
private glueOwner;
|
|
230
|
+
private wasmOwner;
|
|
231
|
+
private head;
|
|
232
|
+
private scriptCommand;
|
|
233
|
+
private interpreted;
|
|
234
|
+
private plan;
|
|
235
|
+
private mayExec;
|
|
236
|
+
private checkedPlan;
|
|
237
|
+
private execGuard;
|
|
238
|
+
private execFile;
|
|
239
|
+
private ticketFile;
|
|
240
|
+
private takeTicket;
|
|
241
|
+
private redeemed;
|
|
242
|
+
private redeem;
|
|
243
|
+
private interpreterChain;
|
|
244
|
+
private commandFile;
|
|
245
|
+
private trustedFiles;
|
|
246
|
+
private grantedCwd;
|
|
247
|
+
private binfmtManifests;
|
|
248
|
+
private backing;
|
|
249
|
+
private backingOf;
|
|
250
|
+
private unrunnable;
|
|
251
|
+
private directory;
|
|
252
|
+
verifiedFs(fs: KernelFs): KernelFs;
|
|
253
|
+
private cacheKey;
|
|
254
|
+
private verified;
|
|
255
|
+
private keyed;
|
|
256
|
+
private cached;
|
|
257
|
+
private module;
|
|
258
|
+
private checkedSources;
|
|
259
|
+
private text;
|
|
260
|
+
private names;
|
|
261
|
+
private program;
|
|
262
|
+
private launch;
|
|
263
|
+
groupSession(pgid: number): number | undefined;
|
|
264
|
+
private loopbackFor;
|
|
265
|
+
private sourceCheck;
|
|
266
|
+
private treeScrubs;
|
|
267
|
+
private marks;
|
|
268
|
+
private start;
|
|
269
|
+
private shownIds;
|
|
270
|
+
private forget;
|
|
271
|
+
private reaped;
|
|
272
|
+
private load;
|
|
273
|
+
private sampler;
|
|
274
|
+
private readonly reapedTimes;
|
|
275
|
+
private readonly idleAt;
|
|
276
|
+
cpuTotal(now?: number): CpuTimes & {
|
|
277
|
+
idle: number;
|
|
278
|
+
};
|
|
279
|
+
loadAverage(): readonly [number, number, number];
|
|
280
|
+
private sampledAt;
|
|
281
|
+
sampleLoad(now?: number): void;
|
|
282
|
+
private idleSince;
|
|
283
|
+
private sampling;
|
|
284
|
+
private readonly spent;
|
|
285
|
+
private readonly imageTimes;
|
|
286
|
+
private readonly childTimes;
|
|
287
|
+
private readonly stopped;
|
|
288
|
+
private stateOf;
|
|
289
|
+
private childrenOf;
|
|
290
|
+
private timesAt;
|
|
291
|
+
private timesOf;
|
|
292
|
+
list(viewer?: Readonly<Cred>): ProcessInfo[];
|
|
293
|
+
private threadsOf;
|
|
294
|
+
private sudo;
|
|
295
|
+
private spawner;
|
|
296
|
+
private childGroup;
|
|
297
|
+
private undecided;
|
|
298
|
+
connectorStamp(pid: number): Promise<SealedCaller>;
|
|
299
|
+
private identityOf;
|
|
300
|
+
private running;
|
|
301
|
+
private decide;
|
|
302
|
+
private forker;
|
|
303
|
+
private keySignal;
|
|
304
|
+
private resolvePrefixes;
|
|
305
|
+
private guardMount;
|
|
306
|
+
private umaskOf;
|
|
307
|
+
private imageOf;
|
|
308
|
+
credOf(pid: number): Cred;
|
|
309
|
+
tagOf(pid: number): string | undefined;
|
|
310
|
+
private released;
|
|
311
|
+
private signalMasksOf;
|
|
312
|
+
private controlsJobs;
|
|
313
|
+
private blockedBy;
|
|
314
|
+
private ignoredBy;
|
|
315
|
+
kill(pid: number, sig: number, sender?: Readonly<Cred>, from?: number): boolean;
|
|
316
|
+
private killAll;
|
|
317
|
+
private driver;
|
|
318
|
+
private fsaDriver;
|
|
319
|
+
revokeIntegrity(path?: string): Promise<void>;
|
|
320
|
+
attest(path: string): Promise<Attestation>;
|
|
321
|
+
watchFiles(paths: readonly string[], notify: (path: string) => void): Promise<() => void>;
|
|
322
|
+
mount(spec: MountSpec): Promise<MountEntry>;
|
|
323
|
+
private mountShm;
|
|
324
|
+
private ownTmp;
|
|
325
|
+
private inUse;
|
|
326
|
+
private stampLayout;
|
|
327
|
+
private realLayoutPath;
|
|
328
|
+
private pnpmReady;
|
|
329
|
+
private pnpmStale;
|
|
330
|
+
private mountedBy;
|
|
331
|
+
private mountRoot;
|
|
332
|
+
insert(target: string, handle: MediumHandle, source?: string): Promise<void>;
|
|
333
|
+
umount(target: string, detach?: boolean): void;
|
|
334
|
+
unmountAll(): void;
|
|
335
|
+
private permit;
|
|
336
|
+
private processMount;
|
|
337
|
+
mountAs(cred: Cred, spec: MountSpec): Promise<MountEntry>;
|
|
338
|
+
umountAs(cred: Cred, target: string): Promise<void>;
|
|
339
|
+
private mountsOwn;
|
|
340
|
+
private processUmount;
|
|
341
|
+
prepare(): Promise<void>;
|
|
342
|
+
private mountFstab;
|
|
343
|
+
private environment;
|
|
344
|
+
private account;
|
|
345
|
+
private terminalAccount;
|
|
346
|
+
private identity;
|
|
347
|
+
fsFor(tag: string | undefined): KernelFs;
|
|
348
|
+
isWriter(tag: string | undefined): boolean;
|
|
349
|
+
private stackFor;
|
|
350
|
+
private writerStack;
|
|
351
|
+
private noLinksOf;
|
|
352
|
+
private rooted;
|
|
353
|
+
private commandFs;
|
|
354
|
+
private processChain;
|
|
355
|
+
private starting;
|
|
356
|
+
openTerminal(argv: string[], options: TerminalOptions): Promise<TerminalSession>;
|
|
357
|
+
run(argv: string[], options?: RunOptions): Promise<RunResult>;
|
|
358
|
+
}
|
|
359
|
+
export type { ProcessInfo, ProcessListing } from './kernel/proc-info.js';
|