@secure-exec/core 0.2.1-rc.1 → 0.3.0-rc.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 +5 -5
- package/dist/binary.d.ts +4 -0
- package/dist/binary.js +25 -0
- package/dist/bytes.d.ts +2 -0
- package/dist/bytes.js +6 -0
- package/dist/callbacks.d.ts +41 -0
- package/dist/callbacks.js +94 -0
- package/dist/cargo.d.ts +2 -0
- package/dist/cargo.js +142 -0
- package/dist/correlation.d.ts +10 -0
- package/dist/correlation.js +49 -0
- package/dist/descriptors.d.ts +34 -0
- package/dist/descriptors.js +37 -0
- package/dist/event-buffer.d.ts +90 -0
- package/dist/event-buffer.js +313 -0
- package/dist/ext.d.ts +7 -0
- package/dist/ext.js +13 -0
- package/dist/filesystem.d.ts +41 -0
- package/dist/filesystem.js +70 -0
- package/dist/frame-payload-codec.d.ts +8 -0
- package/dist/frame-payload-codec.js +14 -0
- package/dist/frame-rpc.d.ts +38 -0
- package/dist/frame-rpc.js +73 -0
- package/dist/frame-stream.d.ts +27 -0
- package/dist/frame-stream.js +99 -0
- package/dist/framing.d.ts +7 -0
- package/dist/framing.js +22 -0
- package/dist/generated/AcpLimitsConfig.d.ts +4 -0
- package/dist/generated/AcpLimitsConfig.js +2 -0
- package/dist/generated/CreateVmConfig.d.ts +19 -0
- package/dist/generated/FsPermissionRule.d.ts +6 -0
- package/dist/generated/FsPermissionRuleSet.d.ts +6 -0
- package/dist/generated/FsPermissionRuleSet.js +1 -0
- package/dist/generated/FsPermissionScope.d.ts +3 -0
- package/dist/generated/FsPermissionScope.js +1 -0
- package/dist/generated/HttpLimitsConfig.d.ts +3 -0
- package/dist/generated/HttpLimitsConfig.js +2 -0
- package/dist/generated/JsModuleResolution.d.ts +1 -0
- package/dist/generated/JsModuleResolution.js +2 -0
- package/dist/generated/JsRuntimeConfig.d.ts +26 -0
- package/dist/generated/JsRuntimeConfig.js +1 -0
- package/dist/generated/JsRuntimeLimitsConfig.d.ts +7 -0
- package/dist/generated/JsRuntimeLimitsConfig.js +2 -0
- package/dist/generated/JsRuntimePlatform.d.ts +1 -0
- package/dist/generated/JsRuntimePlatform.js +2 -0
- package/dist/generated/MountPluginDescriptor.d.ts +4 -0
- package/dist/generated/MountPluginDescriptor.js +2 -0
- package/dist/generated/NativeRootFilesystemConfig.d.ts +5 -0
- package/dist/generated/NativeRootFilesystemConfig.js +1 -0
- package/dist/generated/PatternPermissionRule.d.ts +6 -0
- package/dist/generated/PatternPermissionRule.js +1 -0
- package/dist/generated/PatternPermissionRuleSet.d.ts +6 -0
- package/dist/generated/PatternPermissionRuleSet.js +1 -0
- package/dist/generated/PatternPermissionScope.d.ts +3 -0
- package/dist/generated/PatternPermissionScope.js +1 -0
- package/dist/generated/PermissionMode.d.ts +1 -0
- package/dist/generated/PermissionMode.js +2 -0
- package/dist/generated/PermissionsPolicy.d.ts +10 -0
- package/dist/generated/PermissionsPolicy.js +1 -0
- package/dist/generated/PluginLimitsConfig.d.ts +4 -0
- package/dist/generated/PluginLimitsConfig.js +2 -0
- package/dist/generated/PythonLimitsConfig.d.ts +5 -0
- package/dist/generated/PythonLimitsConfig.js +2 -0
- package/dist/generated/ResourceLimitsConfig.d.ts +22 -0
- package/dist/generated/ResourceLimitsConfig.js +2 -0
- package/dist/generated/RootFilesystemConfig.d.ts +9 -0
- package/dist/generated/RootFilesystemConfig.js +1 -0
- package/dist/generated/RootFilesystemEntry.d.ts +13 -0
- package/dist/generated/RootFilesystemEntry.js +1 -0
- package/dist/generated/RootFilesystemEntryEncoding.d.ts +1 -0
- package/dist/generated/RootFilesystemEntryEncoding.js +2 -0
- package/dist/generated/RootFilesystemEntryKind.d.ts +1 -0
- package/dist/generated/RootFilesystemEntryKind.js +2 -0
- package/dist/generated/RootFilesystemLowerDescriptor.d.ts +7 -0
- package/dist/generated/RootFilesystemLowerDescriptor.js +1 -0
- package/dist/generated/RootFilesystemMode.d.ts +1 -0
- package/dist/generated/RootFilesystemMode.js +2 -0
- package/dist/generated/ToolLimitsConfig.d.ts +10 -0
- package/dist/generated/ToolLimitsConfig.js +2 -0
- package/dist/generated/VmDnsConfig.d.ts +6 -0
- package/dist/generated/VmDnsConfig.js +2 -0
- package/dist/generated/VmLimitsConfig.d.ts +18 -0
- package/dist/generated/VmLimitsConfig.js +1 -0
- package/dist/generated/VmListenPolicyConfig.d.ts +5 -0
- package/dist/generated/VmListenPolicyConfig.js +2 -0
- package/dist/generated/WasmLimitsConfig.d.ts +5 -0
- package/dist/generated/WasmLimitsConfig.js +2 -0
- package/dist/generated-protocol.d.ts +1037 -0
- package/dist/generated-protocol.js +2887 -0
- package/dist/index.d.ts +24 -62
- package/dist/index.js +24 -53
- package/dist/json.d.ts +2 -0
- package/dist/json.js +20 -0
- package/dist/kernel-proxy.d.ts +149 -0
- package/dist/kernel-proxy.js +1733 -0
- package/dist/native-client.d.ts +41 -0
- package/dist/native-client.js +124 -0
- package/dist/node-runtime.d.ts +443 -0
- package/dist/node-runtime.js +569 -0
- package/dist/numbers.d.ts +1 -0
- package/dist/numbers.js +8 -0
- package/dist/ownership.d.ts +18 -0
- package/dist/ownership.js +77 -0
- package/dist/permissions.d.ts +29 -0
- package/dist/permissions.js +68 -0
- package/dist/process.d.ts +35 -0
- package/dist/process.js +125 -0
- package/dist/protocol-client.d.ts +46 -0
- package/dist/protocol-client.js +180 -0
- package/dist/protocol-frames.d.ts +68 -0
- package/dist/protocol-frames.js +139 -0
- package/dist/protocol-maps.d.ts +28 -0
- package/dist/protocol-maps.js +217 -0
- package/dist/protocol-schema.d.ts +10 -0
- package/dist/protocol-schema.js +11 -0
- package/dist/request-payloads.d.ts +137 -0
- package/dist/request-payloads.js +210 -0
- package/dist/response-payloads.d.ts +107 -0
- package/dist/response-payloads.js +161 -0
- package/dist/sidecar-client.d.ts +242 -0
- package/dist/sidecar-client.js +797 -0
- package/dist/state.d.ts +40 -0
- package/dist/state.js +44 -0
- package/dist/test-runtime.d.ts +526 -0
- package/dist/test-runtime.js +2119 -0
- package/dist/vm-config.d.ts +31 -0
- package/dist/vm-config.js +1 -0
- package/fixtures/alpine-defaults.json +520 -0
- package/fixtures/base-filesystem.json +528 -0
- package/package.json +193 -115
- package/LICENSE +0 -191
- package/dist/bridge-setup.d.ts +0 -6
- package/dist/bridge-setup.js +0 -9
- package/dist/esm-compiler.d.ts +0 -18
- package/dist/esm-compiler.js +0 -72
- package/dist/fs-helpers.d.ts +0 -23
- package/dist/fs-helpers.js +0 -41
- package/dist/generated/isolate-runtime.d.ts +0 -19
- package/dist/generated/isolate-runtime.js +0 -21
- package/dist/generated/polyfills.d.ts +0 -82
- package/dist/generated/polyfills.js +0 -82
- package/dist/isolate-runtime/apply-custom-global-policy.js +0 -53
- package/dist/isolate-runtime/apply-timing-mitigation-freeze.js +0 -130
- package/dist/isolate-runtime/apply-timing-mitigation-off.js +0 -14
- package/dist/isolate-runtime/bridge-attach.js +0 -29
- package/dist/isolate-runtime/bridge-initial-globals.js +0 -385
- package/dist/isolate-runtime/eval-script-result.js +0 -8
- package/dist/isolate-runtime/global-exposure-helpers.js +0 -36
- package/dist/isolate-runtime/init-commonjs-module-globals.js +0 -28
- package/dist/isolate-runtime/override-process-cwd.js +0 -8
- package/dist/isolate-runtime/override-process-env.js +0 -8
- package/dist/isolate-runtime/require-setup.js +0 -4153
- package/dist/isolate-runtime/set-commonjs-file-globals.js +0 -36
- package/dist/isolate-runtime/set-stdin-data.js +0 -10
- package/dist/isolate-runtime/setup-dynamic-import.js +0 -123
- package/dist/isolate-runtime/setup-fs-facade.js +0 -87
- package/dist/kernel/command-registry.d.ts +0 -44
- package/dist/kernel/command-registry.js +0 -114
- package/dist/kernel/device-backend.d.ts +0 -14
- package/dist/kernel/device-backend.js +0 -251
- package/dist/kernel/device-layer.d.ts +0 -12
- package/dist/kernel/device-layer.js +0 -271
- package/dist/kernel/dns-cache.d.ts +0 -29
- package/dist/kernel/dns-cache.js +0 -52
- package/dist/kernel/fd-table.d.ts +0 -84
- package/dist/kernel/fd-table.js +0 -278
- package/dist/kernel/file-lock.d.ts +0 -34
- package/dist/kernel/file-lock.js +0 -122
- package/dist/kernel/host-adapter.d.ts +0 -50
- package/dist/kernel/host-adapter.js +0 -8
- package/dist/kernel/index.d.ts +0 -36
- package/dist/kernel/index.js +0 -34
- package/dist/kernel/kernel.d.ts +0 -9
- package/dist/kernel/kernel.js +0 -1415
- package/dist/kernel/mount-table.d.ts +0 -75
- package/dist/kernel/mount-table.js +0 -353
- package/dist/kernel/permissions.d.ts +0 -36
- package/dist/kernel/permissions.js +0 -150
- package/dist/kernel/pipe-manager.d.ts +0 -64
- package/dist/kernel/pipe-manager.js +0 -267
- package/dist/kernel/proc-backend.d.ts +0 -30
- package/dist/kernel/proc-backend.js +0 -428
- package/dist/kernel/proc-layer.d.ts +0 -11
- package/dist/kernel/proc-layer.js +0 -507
- package/dist/kernel/process-table.d.ts +0 -126
- package/dist/kernel/process-table.js +0 -651
- package/dist/kernel/pty.d.ts +0 -109
- package/dist/kernel/pty.js +0 -552
- package/dist/kernel/socket-table.d.ts +0 -312
- package/dist/kernel/socket-table.js +0 -1188
- package/dist/kernel/timer-table.d.ts +0 -54
- package/dist/kernel/timer-table.js +0 -108
- package/dist/kernel/types.d.ts +0 -541
- package/dist/kernel/types.js +0 -98
- package/dist/kernel/user.d.ts +0 -29
- package/dist/kernel/user.js +0 -35
- package/dist/kernel/vfs.d.ts +0 -82
- package/dist/kernel/vfs.js +0 -25
- package/dist/kernel/wait.d.ts +0 -45
- package/dist/kernel/wait.js +0 -112
- package/dist/kernel/wstatus.d.ts +0 -21
- package/dist/kernel/wstatus.js +0 -33
- package/dist/module-resolver.d.ts +0 -29
- package/dist/module-resolver.js +0 -314
- package/dist/package-bundler.d.ts +0 -41
- package/dist/package-bundler.js +0 -497
- package/dist/runtime-driver.d.ts +0 -66
- package/dist/shared/api-types.d.ts +0 -83
- package/dist/shared/bridge-contract.d.ts +0 -772
- package/dist/shared/bridge-contract.js +0 -169
- package/dist/shared/console-formatter.d.ts +0 -22
- package/dist/shared/console-formatter.js +0 -161
- package/dist/shared/constants.d.ts +0 -3
- package/dist/shared/constants.js +0 -3
- package/dist/shared/errors.d.ts +0 -16
- package/dist/shared/errors.js +0 -21
- package/dist/shared/esm-utils.d.ts +0 -28
- package/dist/shared/esm-utils.js +0 -97
- package/dist/shared/global-exposure.d.ts +0 -38
- package/dist/shared/global-exposure.js +0 -876
- package/dist/shared/in-memory-fs.d.ts +0 -16
- package/dist/shared/in-memory-fs.js +0 -115
- package/dist/shared/permissions.d.ts +0 -36
- package/dist/shared/permissions.js +0 -314
- package/dist/shared/require-setup.d.ts +0 -6
- package/dist/shared/require-setup.js +0 -9
- package/dist/test/block-store-conformance.d.ts +0 -34
- package/dist/test/block-store-conformance.js +0 -251
- package/dist/test/metadata-store-conformance.d.ts +0 -37
- package/dist/test/metadata-store-conformance.js +0 -646
- package/dist/test/vfs-conformance.d.ts +0 -65
- package/dist/test/vfs-conformance.js +0 -842
- package/dist/types.d.ts +0 -98
- package/dist/types.js +0 -6
- package/dist/vfs/chunked-vfs.d.ts +0 -66
- package/dist/vfs/chunked-vfs.js +0 -1290
- package/dist/vfs/host-block-store.d.ts +0 -19
- package/dist/vfs/host-block-store.js +0 -97
- package/dist/vfs/memory-block-store.d.ts +0 -16
- package/dist/vfs/memory-block-store.js +0 -45
- package/dist/vfs/memory-metadata.d.ts +0 -75
- package/dist/vfs/memory-metadata.js +0 -528
- package/dist/vfs/sqlite-metadata.d.ts +0 -91
- package/dist/vfs/sqlite-metadata.js +0 -582
- package/dist/vfs/types.d.ts +0 -210
- package/dist/vfs/types.js +0 -8
- /package/dist/{runtime-driver.js → generated/CreateVmConfig.js} +0 -0
- /package/dist/{shared/api-types.js → generated/FsPermissionRule.js} +0 -0
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Kernel timer table with per-process ownership and budget enforcement.
|
|
3
|
-
*
|
|
4
|
-
* Tracks active timers (setTimeout/setInterval) per-process. Actual
|
|
5
|
-
* scheduling is delegated to the host via callbacks — the kernel only
|
|
6
|
-
* manages ownership, limits, and cleanup.
|
|
7
|
-
*/
|
|
8
|
-
export interface KernelTimer {
|
|
9
|
-
readonly id: number;
|
|
10
|
-
readonly pid: number;
|
|
11
|
-
readonly delayMs: number;
|
|
12
|
-
readonly repeat: boolean;
|
|
13
|
-
/** Host-side handle returned by the scheduling function (for cancellation). */
|
|
14
|
-
hostHandle: ReturnType<typeof setTimeout> | number | undefined;
|
|
15
|
-
/** User callback to invoke when the timer fires. */
|
|
16
|
-
callback: () => void;
|
|
17
|
-
/** True once the timer has been cleared. */
|
|
18
|
-
cleared: boolean;
|
|
19
|
-
}
|
|
20
|
-
export interface TimerTableOptions {
|
|
21
|
-
/** Default per-process timer limit. 0 = unlimited. */
|
|
22
|
-
defaultMaxTimers?: number;
|
|
23
|
-
}
|
|
24
|
-
export declare class TimerTable {
|
|
25
|
-
private timers;
|
|
26
|
-
private nextTimerId;
|
|
27
|
-
private defaultMaxTimers;
|
|
28
|
-
/** Per-process limit overrides. */
|
|
29
|
-
private processLimits;
|
|
30
|
-
constructor(options?: TimerTableOptions);
|
|
31
|
-
/**
|
|
32
|
-
* Create a timer owned by `pid`.
|
|
33
|
-
* Returns the kernel timer ID. The caller must schedule the actual
|
|
34
|
-
* timeout on the host and set `timer.hostHandle`.
|
|
35
|
-
*/
|
|
36
|
-
createTimer(pid: number, delayMs: number, repeat: boolean, callback: () => void): number;
|
|
37
|
-
/** Get a timer by ID. Returns null if not found. */
|
|
38
|
-
get(timerId: number): KernelTimer | null;
|
|
39
|
-
/** Clear (cancel) a timer. The caller should also cancel the host-side handle. */
|
|
40
|
-
clearTimer(timerId: number, pid?: number): void;
|
|
41
|
-
/** Set per-process timer limit. */
|
|
42
|
-
setLimit(pid: number, maxTimers: number): void;
|
|
43
|
-
/** Get the active timer count for a process. */
|
|
44
|
-
countForProcess(pid: number): number;
|
|
45
|
-
/** Get all active timers for a process. */
|
|
46
|
-
getActiveTimers(pid: number): KernelTimer[];
|
|
47
|
-
/** Clear all timers owned by a process. Called on process exit. */
|
|
48
|
-
clearAllForProcess(pid: number): void;
|
|
49
|
-
/** Dispose all timers. Called on kernel shutdown. */
|
|
50
|
-
disposeAll(): void;
|
|
51
|
-
/** Number of active timers across all processes. */
|
|
52
|
-
get size(): number;
|
|
53
|
-
private getLimit;
|
|
54
|
-
}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Kernel timer table with per-process ownership and budget enforcement.
|
|
3
|
-
*
|
|
4
|
-
* Tracks active timers (setTimeout/setInterval) per-process. Actual
|
|
5
|
-
* scheduling is delegated to the host via callbacks — the kernel only
|
|
6
|
-
* manages ownership, limits, and cleanup.
|
|
7
|
-
*/
|
|
8
|
-
import { KernelError } from "./types.js";
|
|
9
|
-
export class TimerTable {
|
|
10
|
-
timers = new Map();
|
|
11
|
-
nextTimerId = 1;
|
|
12
|
-
defaultMaxTimers;
|
|
13
|
-
/** Per-process limit overrides. */
|
|
14
|
-
processLimits = new Map();
|
|
15
|
-
constructor(options) {
|
|
16
|
-
this.defaultMaxTimers = options?.defaultMaxTimers ?? 0;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Create a timer owned by `pid`.
|
|
20
|
-
* Returns the kernel timer ID. The caller must schedule the actual
|
|
21
|
-
* timeout on the host and set `timer.hostHandle`.
|
|
22
|
-
*/
|
|
23
|
-
createTimer(pid, delayMs, repeat, callback) {
|
|
24
|
-
// Enforce per-process limit
|
|
25
|
-
const limit = this.getLimit(pid);
|
|
26
|
-
if (limit > 0) {
|
|
27
|
-
const count = this.countForProcess(pid);
|
|
28
|
-
if (count >= limit) {
|
|
29
|
-
throw new KernelError("EAGAIN", "timer limit exceeded");
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
const id = this.nextTimerId++;
|
|
33
|
-
const timer = {
|
|
34
|
-
id,
|
|
35
|
-
pid,
|
|
36
|
-
delayMs,
|
|
37
|
-
repeat,
|
|
38
|
-
hostHandle: undefined,
|
|
39
|
-
callback,
|
|
40
|
-
cleared: false,
|
|
41
|
-
};
|
|
42
|
-
this.timers.set(id, timer);
|
|
43
|
-
return id;
|
|
44
|
-
}
|
|
45
|
-
/** Get a timer by ID. Returns null if not found. */
|
|
46
|
-
get(timerId) {
|
|
47
|
-
return this.timers.get(timerId) ?? null;
|
|
48
|
-
}
|
|
49
|
-
/** Clear (cancel) a timer. The caller should also cancel the host-side handle. */
|
|
50
|
-
clearTimer(timerId, pid) {
|
|
51
|
-
const timer = this.timers.get(timerId);
|
|
52
|
-
if (!timer)
|
|
53
|
-
return; // Clearing a non-existent timer is a no-op (matches POSIX)
|
|
54
|
-
// Cross-process isolation: if pid is provided, only the owning process can clear
|
|
55
|
-
if (pid !== undefined && timer.pid !== pid) {
|
|
56
|
-
throw new KernelError("EACCES", `timer ${timerId} not owned by pid ${pid}`);
|
|
57
|
-
}
|
|
58
|
-
timer.cleared = true;
|
|
59
|
-
this.timers.delete(timerId);
|
|
60
|
-
}
|
|
61
|
-
/** Set per-process timer limit. */
|
|
62
|
-
setLimit(pid, maxTimers) {
|
|
63
|
-
this.processLimits.set(pid, maxTimers);
|
|
64
|
-
}
|
|
65
|
-
/** Get the active timer count for a process. */
|
|
66
|
-
countForProcess(pid) {
|
|
67
|
-
let count = 0;
|
|
68
|
-
for (const timer of this.timers.values()) {
|
|
69
|
-
if (timer.pid === pid)
|
|
70
|
-
count++;
|
|
71
|
-
}
|
|
72
|
-
return count;
|
|
73
|
-
}
|
|
74
|
-
/** Get all active timers for a process. */
|
|
75
|
-
getActiveTimers(pid) {
|
|
76
|
-
const result = [];
|
|
77
|
-
for (const timer of this.timers.values()) {
|
|
78
|
-
if (timer.pid === pid)
|
|
79
|
-
result.push(timer);
|
|
80
|
-
}
|
|
81
|
-
return result;
|
|
82
|
-
}
|
|
83
|
-
/** Clear all timers owned by a process. Called on process exit. */
|
|
84
|
-
clearAllForProcess(pid) {
|
|
85
|
-
for (const [id, timer] of this.timers) {
|
|
86
|
-
if (timer.pid === pid) {
|
|
87
|
-
timer.cleared = true;
|
|
88
|
-
this.timers.delete(id);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
this.processLimits.delete(pid);
|
|
92
|
-
}
|
|
93
|
-
/** Dispose all timers. Called on kernel shutdown. */
|
|
94
|
-
disposeAll() {
|
|
95
|
-
for (const timer of this.timers.values()) {
|
|
96
|
-
timer.cleared = true;
|
|
97
|
-
}
|
|
98
|
-
this.timers.clear();
|
|
99
|
-
this.processLimits.clear();
|
|
100
|
-
}
|
|
101
|
-
/** Number of active timers across all processes. */
|
|
102
|
-
get size() {
|
|
103
|
-
return this.timers.size;
|
|
104
|
-
}
|
|
105
|
-
getLimit(pid) {
|
|
106
|
-
return this.processLimits.get(pid) ?? this.defaultMaxTimers;
|
|
107
|
-
}
|
|
108
|
-
}
|