@ai-ecoverse/slicc-kernel 1.170.4 → 1.172.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 +24 -8
- package/dist/driver-worker.js +35 -11
- package/dist/driver-worker.js.map +3 -3
- package/dist/index.js +263 -53
- package/dist/index.js.map +4 -4
- package/dist/kernel-worker.js +779 -438
- package/dist/kernel-worker.js.map +4 -4
- package/dist/node-driver-worker.js +39 -15
- package/dist/node-driver-worker.js.map +3 -3
- package/dist/node-process-worker.cjs +1 -1
- package/dist/node-process-worker.js +1 -1
- package/dist/node.js +798 -488
- package/dist/node.js.map +4 -4
- package/dist/process-worker.js +1 -1
- package/dist/testing.js +498 -3
- package/dist/testing.js.map +4 -4
- package/dist/types/fs/attest.d.ts +12 -2
- package/dist/types/index.d.ts +13 -5
- package/dist/types/kernel/net/http-syscalls.d.ts +3 -1
- package/dist/types/kernel/net/loopback-transport.d.ts +1 -1
- package/dist/types/kernel/net/placeholder-floor.d.ts +9 -3
- package/dist/types/kernel/net/remote-transport.d.ts +8 -2
- package/dist/types/kernel/net/sealed-fetch.d.ts +27 -0
- package/dist/types/kernel/net/transport.d.ts +6 -1
- package/dist/types/kernel/socket.d.ts +4 -1
- package/dist/types/launcher.d.ts +12 -2
- package/dist/types/node/follow.d.ts +4 -0
- package/dist/types/node.d.ts +13 -4
- package/dist/types/sealed-relay.d.ts +12 -2
- package/dist/types/serve.d.ts +8 -1
- package/dist/types/testing.d.ts +3 -0
- package/dist/types/transport.d.ts +4 -3
- package/package.json +1 -1
package/dist/types/launcher.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import type { CronClock } from './cron/clock.js';
|
|
|
5
5
|
import { CronService } from './cron/service.js';
|
|
6
6
|
import { FacadeHosts } from './facade/hosts.js';
|
|
7
7
|
import type { FacadeSpecs } from './facade/types.js';
|
|
8
|
-
import { type Attestation } from './fs/attest.js';
|
|
8
|
+
import { type Attestation, type AttestOptions, type AttestTombstone } from './fs/attest.js';
|
|
9
9
|
import { Dac, type DenialHook } from './fs/dac.js';
|
|
10
10
|
import { type Protection } from './fs/protect.js';
|
|
11
11
|
import type { KernelFs, UsersMode } from './fs/types.js';
|
|
@@ -24,6 +24,7 @@ import { type WasmWorkerLike } from './kernel/host.js';
|
|
|
24
24
|
import type { CaStore } from './kernel/net/realm-ca.js';
|
|
25
25
|
import { Resolver } from './kernel/net/resolver.js';
|
|
26
26
|
import { Routes, type RouteTable } from './kernel/net/routes.js';
|
|
27
|
+
import { type SealedFetchHook } from './kernel/net/sealed-fetch.js';
|
|
27
28
|
import type { RealmTransport } from './kernel/net/transport.js';
|
|
28
29
|
import type { NetworkUplink } from './kernel/net/uplink.js';
|
|
29
30
|
import { type ProcessInfo } from './kernel/proc-info.js';
|
|
@@ -69,6 +70,7 @@ export interface LauncherOptions {
|
|
|
69
70
|
};
|
|
70
71
|
onDenial?: DenialHook;
|
|
71
72
|
sealed?: SealedHook;
|
|
73
|
+
sealedFetch?: SealedFetchHook;
|
|
72
74
|
clipboard?: ClipboardHook;
|
|
73
75
|
embedder?: EmbedderHook;
|
|
74
76
|
approve?: ApproveHook;
|
|
@@ -255,6 +257,9 @@ export declare class Launcher {
|
|
|
255
257
|
readonly usersMode: UsersMode;
|
|
256
258
|
readonly dac: Dac | undefined;
|
|
257
259
|
private readonly sealed;
|
|
260
|
+
private fill;
|
|
261
|
+
private readonly fills;
|
|
262
|
+
private placeholders;
|
|
258
263
|
private readonly scrubs;
|
|
259
264
|
private readonly clipboard;
|
|
260
265
|
readonly embedder: EmbedderBroker;
|
|
@@ -350,6 +355,8 @@ export declare class Launcher {
|
|
|
350
355
|
private packageRoots;
|
|
351
356
|
private loadedUnder;
|
|
352
357
|
groupSession(pgid: number): number | undefined;
|
|
358
|
+
private floored;
|
|
359
|
+
private httpFor;
|
|
353
360
|
private loopbackFor;
|
|
354
361
|
private sourceCheck;
|
|
355
362
|
private treeScrubs;
|
|
@@ -387,6 +394,9 @@ export declare class Launcher {
|
|
|
387
394
|
private childGroup;
|
|
388
395
|
private undecided;
|
|
389
396
|
connectorStamp(pid: number): Promise<SealedCaller>;
|
|
397
|
+
liveStamp(pid: number): Promise<SealedCaller | undefined>;
|
|
398
|
+
setPlaceholders(list: readonly string[]): void;
|
|
399
|
+
endFills(): void;
|
|
390
400
|
private identityOf;
|
|
391
401
|
private running;
|
|
392
402
|
private decide;
|
|
@@ -416,7 +426,7 @@ export declare class Launcher {
|
|
|
416
426
|
private driver;
|
|
417
427
|
private fsaDriver;
|
|
418
428
|
revokeIntegrity(path?: string): Promise<void>;
|
|
419
|
-
attest(path: string): Promise<Attestation>;
|
|
429
|
+
attest(path: string, options?: AttestOptions): Promise<Attestation | AttestTombstone>;
|
|
420
430
|
private watchSource;
|
|
421
431
|
watchFiles(paths: readonly string[], notify: (path: string) => void): Promise<() => void>;
|
|
422
432
|
mount(spec: MountSpec): Promise<MountEntry>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { RealmTransportRequest, RealmTransportResponse } from '../kernel/net/transport.js';
|
|
2
|
+
type Send = (request: RealmTransportRequest) => Promise<RealmTransportResponse>;
|
|
3
|
+
export declare function followRedirects(send: Send, request: RealmTransportRequest): Promise<RealmTransportResponse>;
|
|
4
|
+
export {};
|
package/dist/types/node.d.ts
CHANGED
|
@@ -2,15 +2,16 @@ import { type MessagePort, type Worker } from 'node:worker_threads';
|
|
|
2
2
|
import type { CdpHook } from './cdp/types.js';
|
|
3
3
|
import type { CronClock } from './cron/clock.js';
|
|
4
4
|
import type { FacadeSpecs } from './facade/types.js';
|
|
5
|
+
import type { Attestation, AttestTombstone } from './fs/attest.js';
|
|
5
6
|
import type { DenialHook } from './fs/dac.js';
|
|
6
7
|
import type { Protection } from './fs/protect.js';
|
|
7
8
|
import { type UsersMode } from './fs/types.js';
|
|
8
|
-
import type { ConnectOptions, KernelGroups, KernelIntegrity, KernelUsers, RunOptions, RunResult, Terminal, TerminalOptions } from './index.js';
|
|
9
|
+
import type { ConnectOptions, KernelGroups, KernelIntegrity, KernelSealed, KernelUsers, RunOptions, RunResult, Terminal, TerminalOptions } from './index.js';
|
|
9
10
|
import type { ClipboardHook } from './kernel/clipboard.js';
|
|
10
11
|
import { type EmbedderHook } from './kernel/embedder.js';
|
|
11
12
|
import type { RouteTable } from './kernel/net/routes.js';
|
|
13
|
+
import { type SealedOption } from './kernel/net/sealed-fetch.js';
|
|
12
14
|
import type { NetworkUplink } from './kernel/net/uplink.js';
|
|
13
|
-
import type { SealedHook } from './kernel/sealed.js';
|
|
14
15
|
import type { FetchLike, HostfsGrantHook } from './mount/hostfs.js';
|
|
15
16
|
import type { MountEntry, MountSpec } from './mount/mount-fs.js';
|
|
16
17
|
import type { ProcessMountPolicy } from './mount/syscall.js';
|
|
@@ -21,16 +22,19 @@ import { type NetworkTransport } from './transport.js';
|
|
|
21
22
|
export type { CdpConnection, CdpHook, CdpRequest } from './cdp/types.js';
|
|
22
23
|
export { type AttachOptions, attachKernel, type ClientEnded, type ClientFetchRequest, type ClientFs, type ClientRunOptions, type ClientRunResult, type ClientTerminal, type ClientTerminalOptions, KernelCallError, type KernelClient, KernelGoneError, type ProcessEntry, type SpawnedProcess, type SpawnOptions, type WatchChange, } from './client/attach.js';
|
|
23
24
|
export type { FacadeConnection, FacadeHook, FacadeInfo, FacadeSpec, FacadeSpecs, } from './facade/types.js';
|
|
25
|
+
export type { Attestation, AttestedDir, AttestOptions, AttestTombstone } from './fs/attest.js';
|
|
24
26
|
export type { Denial, DenialHook } from './fs/dac.js';
|
|
25
|
-
export type { ConnectOptions, Ended, KernelGroups, KernelIntegrity, KernelUsers, NetworkUplink, ResolveAnswer, ResolveFamily, RouteTable, RunOptions, RunResult, Terminal, TerminalOptions, TerminalSignal, } from './index.js';
|
|
27
|
+
export type { ConnectOptions, Ended, KernelGroups, KernelIntegrity, KernelSealed, KernelUsers, NetworkUplink, ResolveAnswer, ResolveFamily, RouteTable, RunOptions, RunResult, Terminal, TerminalOptions, TerminalSignal, } from './index.js';
|
|
26
28
|
export type { ClipboardHook, ClipboardStamp } from './kernel/clipboard.js';
|
|
27
29
|
export type { EmbedderHook, EmbedderKindPolicy, EmbedderReply, EmbedderRequest, EmbedderStamp, } from './kernel/embedder.js';
|
|
30
|
+
export { SEALED_FETCH_VERSION, type SealedFetchHook, type SealedFetchRequest, type SealedOption, } from './kernel/net/sealed-fetch.js';
|
|
28
31
|
export type { SealedAbortReason, SealedCaller, SealedHook, SealedRequest, } from './kernel/sealed.js';
|
|
29
32
|
export type { ConnectorStamp } from './kernel/socket.js';
|
|
30
33
|
export type { HostfsEvent, HostfsGrant, HostfsGrantHook, HostfsPortGrant, HostfsTransport, } from './mount/hostfs.js';
|
|
31
34
|
export { serveHostfsPort } from './mount/hostfs.js';
|
|
32
35
|
export type { MountEntry, MountSpec } from './mount/mount-fs.js';
|
|
33
36
|
export type { ApproveHook, SudoAnswer, SudoRequest } from './sudo.js';
|
|
37
|
+
export type { NetworkRedirectPolicy } from './transport.js';
|
|
34
38
|
export { fetchTransport, type NetworkTransport } from './transport.js';
|
|
35
39
|
export { memoryRoot };
|
|
36
40
|
export interface NodeKernelOptions {
|
|
@@ -57,7 +61,7 @@ export interface NodeKernelOptions {
|
|
|
57
61
|
hostname?: string;
|
|
58
62
|
users?: UsersMode;
|
|
59
63
|
onDenial?: DenialHook;
|
|
60
|
-
sealed?:
|
|
64
|
+
sealed?: SealedOption;
|
|
61
65
|
clipboard?: ClipboardHook;
|
|
62
66
|
requests?: EmbedderHook;
|
|
63
67
|
approve?: ApproveHook;
|
|
@@ -83,6 +87,11 @@ export interface NodeKernel {
|
|
|
83
87
|
readFile(path: string): Promise<Uint8Array>;
|
|
84
88
|
chmod(path: string, mode: number): Promise<void>;
|
|
85
89
|
readonly integrity: KernelIntegrity;
|
|
90
|
+
readonly sealed: KernelSealed;
|
|
91
|
+
attest(path: string): Promise<Attestation>;
|
|
92
|
+
attest(path: string, options: {
|
|
93
|
+
absent: 'allow';
|
|
94
|
+
}): Promise<Attestation | AttestTombstone>;
|
|
86
95
|
connect(options?: ConnectOptions): Promise<MessagePort>;
|
|
87
96
|
readonly users: KernelUsers;
|
|
88
97
|
readonly groups: KernelGroups;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { type SealedFetchHook, type SealedFetchRequest } from './kernel/net/sealed-fetch.js';
|
|
1
2
|
import type { SealedHook, SealedRequest } from './kernel/sealed.js';
|
|
2
3
|
export interface SealedPort {
|
|
3
|
-
postMessage(message: unknown): void;
|
|
4
|
+
postMessage(message: unknown, transfer?: Transferable[]): void;
|
|
4
5
|
}
|
|
5
6
|
export interface SealedAsk {
|
|
6
7
|
id: number;
|
|
@@ -15,12 +16,21 @@ export interface SealedAbort {
|
|
|
15
16
|
id: number;
|
|
16
17
|
reason: unknown;
|
|
17
18
|
}
|
|
19
|
+
type WireRequest = Omit<SealedFetchRequest, 'bodyStream'> & {
|
|
20
|
+
streamed?: true;
|
|
21
|
+
};
|
|
22
|
+
export interface SealedFetchAsk {
|
|
23
|
+
req: WireRequest;
|
|
24
|
+
port: MessagePort;
|
|
25
|
+
}
|
|
18
26
|
export declare function sealedAsker(port: SealedPort): {
|
|
19
27
|
hook: SealedHook;
|
|
28
|
+
fetch: SealedFetchHook;
|
|
20
29
|
answer(reply: SealedReply): void;
|
|
21
30
|
};
|
|
22
31
|
export interface SealedAnswerer {
|
|
23
32
|
handle(data: unknown): boolean;
|
|
24
33
|
close(): void;
|
|
25
34
|
}
|
|
26
|
-
export declare function sealedAnswerer(port: SealedPort, hook: SealedHook | undefined): SealedAnswerer;
|
|
35
|
+
export declare function sealedAnswerer(port: SealedPort, hook: SealedHook | undefined, fetchHook?: SealedFetchHook): SealedAnswerer;
|
|
36
|
+
export {};
|
package/dist/types/serve.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type LockManagerLike } from './client/protocol.js';
|
|
2
|
+
import type { AttestOptions } from './fs/attest.js';
|
|
2
3
|
import { type MetaStore } from './fs/meta.js';
|
|
3
4
|
import { type ProtectInit } from './fs/protect.js';
|
|
4
5
|
import { type UsersMode } from './fs/types.js';
|
|
@@ -42,6 +43,7 @@ export interface InitRequest {
|
|
|
42
43
|
protect?: ProtectInit;
|
|
43
44
|
denials?: boolean;
|
|
44
45
|
sealed?: boolean;
|
|
46
|
+
sealedFetch?: boolean;
|
|
45
47
|
clipboard?: boolean;
|
|
46
48
|
requests?: Record<string, EmbedderKindPolicy>;
|
|
47
49
|
approve?: boolean;
|
|
@@ -148,6 +150,7 @@ export type AttestRequest = {
|
|
|
148
150
|
id: number;
|
|
149
151
|
op: 'attest';
|
|
150
152
|
path: string;
|
|
153
|
+
options?: AttestOptions;
|
|
151
154
|
} | {
|
|
152
155
|
id: number;
|
|
153
156
|
op: 'chmod';
|
|
@@ -172,7 +175,11 @@ export interface FileChanged {
|
|
|
172
175
|
path: string;
|
|
173
176
|
};
|
|
174
177
|
}
|
|
175
|
-
export type KernelRequest =
|
|
178
|
+
export type KernelRequest = {
|
|
179
|
+
id: number;
|
|
180
|
+
op: 'sealed-placeholders';
|
|
181
|
+
list: readonly string[];
|
|
182
|
+
} | AttestRequest | InitRequest | RunRequest | OpenTerminalRequest | TerminalRequest | ConnectRequest | UsersRequest | MountRequest | DialRequest | RoutesRequest | TraitsRequest;
|
|
176
183
|
type WithoutId<T> = T extends unknown ? Omit<T, 'id'> : never;
|
|
177
184
|
export type KernelCall = WithoutId<KernelRequest>;
|
|
178
185
|
export declare function inOpfs(deps: ServeDeps, root: FileSystemDirectoryHandle): Promise<boolean>;
|
package/dist/types/testing.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type { RouteTable } from './kernel/net/routes.js';
|
|
2
2
|
import { type NetworkUplink, type ResolveAnswer, type ResolveFamily, type UplinkConn, type UplinkDatagram, type UplinkDial, type UplinkMessage, type UplinkUdp, type UplinkUdpOpen, type UplinkUnreachable } from './kernel/net/uplink.js';
|
|
3
3
|
export { type CronClock, type FakeCronClock, fakeCronClock } from './cron/clock.js';
|
|
4
|
+
export { placeholderFloor } from './kernel/net/placeholder-floor.js';
|
|
5
|
+
export { sealedFetcher } from './kernel/net/sealed-fetch.js';
|
|
4
6
|
export { setTestSyscallHook, type TestSyscall, type TestSyscallHook, } from './kernel/test-hooks.js';
|
|
7
|
+
export { sealedAnswerer, sealedAsker } from './sealed-relay.js';
|
|
5
8
|
export type { NetworkUplink, ResolveAnswer, ResolveFamily, RouteTable, UplinkConn, UplinkDatagram, UplinkDial, UplinkMessage, UplinkUdp, UplinkUdpOpen, UplinkUnreachable, };
|
|
6
9
|
export type FakeDatagramPeer = (bytes: Uint8Array) => Uint8Array | readonly Uint8Array[] | {
|
|
7
10
|
error: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { TransportCall, TransportReply } from './kernel/net/remote-transport.js';
|
|
2
|
-
import type { HeaderList, RealmRedirectHop, RealmTransport, RealmTransportExit, RealmTransportRequest, RealmTransportResponse, RealmTransportTraits, RealmWebSocket, RealmWebSocketRequest } from './kernel/net/transport.js';
|
|
2
|
+
import type { HeaderList, RealmRedirectHop, RealmRedirectPolicy, RealmTransport, RealmTransportExit, RealmTransportRequest, RealmTransportResponse, RealmTransportTraits, RealmWebSocket, RealmWebSocketRequest } from './kernel/net/transport.js';
|
|
3
3
|
import { type WebSocketConstructor } from './websocket-transport.js';
|
|
4
|
-
export type { HeaderList, RealmRedirectHop as NetworkRedirectHop, RealmTransport as NetworkTransport, RealmTransportExit as NetworkExit, RealmTransportRequest as NetworkRequest, RealmTransportResponse as NetworkResponse, RealmTransportTraits as NetworkTraits, RealmWebSocket as NetworkWebSocket, RealmWebSocketRequest as NetworkWebSocketRequest, };
|
|
4
|
+
export type { HeaderList, RealmRedirectHop as NetworkRedirectHop, RealmRedirectPolicy as NetworkRedirectPolicy, RealmTransport as NetworkTransport, RealmTransportExit as NetworkExit, RealmTransportRequest as NetworkRequest, RealmTransportResponse as NetworkResponse, RealmTransportTraits as NetworkTraits, RealmWebSocket as NetworkWebSocket, RealmWebSocketRequest as NetworkWebSocketRequest, };
|
|
5
5
|
export interface FetchTransportOptions {
|
|
6
6
|
fetch?: typeof globalThis.fetch;
|
|
7
7
|
maxRequestBody?: number;
|
|
@@ -21,6 +21,7 @@ export interface TransportServer {
|
|
|
21
21
|
answer(call: TransportCall): void;
|
|
22
22
|
close(): void;
|
|
23
23
|
}
|
|
24
|
-
export declare function serveTransport(peer: TransportPeer, transport: RealmTransport, { closeWaitMs }?: {
|
|
24
|
+
export declare function serveTransport(peer: TransportPeer, transport: RealmTransport, { closeWaitMs, attributed, }?: {
|
|
25
25
|
closeWaitMs?: number;
|
|
26
|
+
attributed?: boolean;
|
|
26
27
|
}): TransportServer;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-ecoverse/slicc-kernel",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.172.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",
|