@ai-ecoverse/slicc-kernel 1.102.6 → 1.103.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.
Files changed (178) hide show
  1. package/README.md +1 -1
  2. package/dist/kernel-worker.js +1 -1
  3. package/dist/node-process-worker.js +1 -1
  4. package/dist/node.js +1 -1
  5. package/dist/process-worker.js +1 -1
  6. package/dist/types/body-idle.d.ts +3 -0
  7. package/dist/types/bytes.d.ts +1 -0
  8. package/dist/types/cdp/facade.d.ts +27 -0
  9. package/dist/types/cdp/hosts.d.ts +14 -0
  10. package/dist/types/cdp/port.d.ts +24 -0
  11. package/dist/types/cdp/types.d.ts +12 -0
  12. package/dist/types/cdp/websocket.d.ts +61 -0
  13. package/dist/types/client/attach.d.ts +132 -0
  14. package/dist/types/client/dial-stream.d.ts +23 -0
  15. package/dist/types/client/loopback-fetch.d.ts +5 -0
  16. package/dist/types/client/protocol.d.ts +153 -0
  17. package/dist/types/client/serve-client.d.ts +18 -0
  18. package/dist/types/clipboard-relay.d.ts +25 -0
  19. package/dist/types/commands.d.ts +38 -0
  20. package/dist/types/cron/clock.d.ts +13 -0
  21. package/dist/types/driver.d.ts +3 -0
  22. package/dist/types/facade/hosts.d.ts +12 -0
  23. package/dist/types/facade/port.d.ts +16 -0
  24. package/dist/types/facade/types.d.ts +23 -0
  25. package/dist/types/fs/access.d.ts +29 -0
  26. package/dist/types/fs/attest.d.ts +41 -0
  27. package/dist/types/fs/changes.d.ts +19 -0
  28. package/dist/types/fs/commands.d.ts +4 -0
  29. package/dist/types/fs/dac.d.ts +64 -0
  30. package/dist/types/fs/dev-removal.d.ts +9 -0
  31. package/dist/types/fs/fresh-modules.d.ts +9 -0
  32. package/dist/types/fs/integrity.d.ts +53 -0
  33. package/dist/types/fs/meta.d.ts +85 -0
  34. package/dist/types/fs/opfs.d.ts +141 -0
  35. package/dist/types/fs/owners.d.ts +17 -0
  36. package/dist/types/fs/pages.d.ts +41 -0
  37. package/dist/types/fs/path-map.d.ts +16 -0
  38. package/dist/types/fs/physical-path.d.ts +14 -0
  39. package/dist/types/fs/protect.d.ts +27 -0
  40. package/dist/types/fs/ranged.d.ts +73 -0
  41. package/dist/types/fs/remote.d.ts +45 -0
  42. package/dist/types/fs/types.d.ts +115 -0
  43. package/dist/types/fs/unlinked.d.ts +75 -0
  44. package/dist/types/fs/view.d.ts +1 -0
  45. package/dist/types/fs/walk.d.ts +12 -0
  46. package/dist/types/fs/watch.d.ts +23 -0
  47. package/dist/types/index.d.ts +159 -0
  48. package/dist/types/integrity-relay.d.ts +18 -0
  49. package/dist/types/kernel/children.d.ts +90 -0
  50. package/dist/types/kernel/clipboard.d.ts +49 -0
  51. package/dist/types/kernel/cpu-clock.d.ts +56 -0
  52. package/dist/types/kernel/cred.d.ts +17 -0
  53. package/dist/types/kernel/dgram.d.ts +56 -0
  54. package/dist/types/kernel/dial.d.ts +20 -0
  55. package/dist/types/kernel/epoll.d.ts +67 -0
  56. package/dist/types/kernel/eventfd.d.ts +19 -0
  57. package/dist/types/kernel/exec-ticket.d.ts +25 -0
  58. package/dist/types/kernel/fd-table.d.ts +107 -0
  59. package/dist/types/kernel/host-ops.d.ts +98 -0
  60. package/dist/types/kernel/host.d.ts +116 -0
  61. package/dist/types/kernel/jobs.d.ts +50 -0
  62. package/dist/types/kernel/locks.d.ts +40 -0
  63. package/dist/types/kernel/net/datagram-wire.d.ts +8 -0
  64. package/dist/types/kernel/net/http-syscalls.d.ts +58 -0
  65. package/dist/types/kernel/net/http1.d.ts +48 -0
  66. package/dist/types/kernel/net/loopback-names.d.ts +14 -0
  67. package/dist/types/kernel/net/loopback-transport.d.ts +13 -0
  68. package/dist/types/kernel/net/network.d.ts +29 -0
  69. package/dist/types/kernel/net/proxy-service.d.ts +70 -0
  70. package/dist/types/kernel/net/realm-ca.d.ts +28 -0
  71. package/dist/types/kernel/net/redirect-hops.d.ts +5 -0
  72. package/dist/types/kernel/net/remote-transport.d.ts +98 -0
  73. package/dist/types/kernel/net/resolver.d.ts +29 -0
  74. package/dist/types/kernel/net/routes.d.ts +15 -0
  75. package/dist/types/kernel/net/tls-engine.d.ts +46 -0
  76. package/dist/types/kernel/net/tls-tunnel.d.ts +35 -0
  77. package/dist/types/kernel/net/transport.d.ts +64 -0
  78. package/dist/types/kernel/net/uplink-socket.d.ts +11 -0
  79. package/dist/types/kernel/net/uplink.d.ts +163 -0
  80. package/dist/types/kernel/net/ws-queue.d.ts +21 -0
  81. package/dist/types/kernel/net/ws-syscalls.d.ts +45 -0
  82. package/dist/types/kernel/net/x509.d.ts +34 -0
  83. package/dist/types/kernel/pipe.d.ts +29 -0
  84. package/dist/types/kernel/proc-info.d.ts +44 -0
  85. package/dist/types/kernel/process.d.ts +525 -0
  86. package/dist/types/kernel/protocol.d.ts +126 -0
  87. package/dist/types/kernel/pty.d.ts +84 -0
  88. package/dist/types/kernel/run-child.d.ts +39 -0
  89. package/dist/types/kernel/scrub-file.d.ts +13 -0
  90. package/dist/types/kernel/sealed.d.ts +74 -0
  91. package/dist/types/kernel/select.d.ts +7 -0
  92. package/dist/types/kernel/sem.d.ts +72 -0
  93. package/dist/types/kernel/settling.d.ts +16 -0
  94. package/dist/types/kernel/signals.d.ts +44 -0
  95. package/dist/types/kernel/socket-syscalls.d.ts +74 -0
  96. package/dist/types/kernel/socket.d.ts +125 -0
  97. package/dist/types/kernel/timer.d.ts +4 -0
  98. package/dist/types/kernel/tty.d.ts +53 -0
  99. package/dist/types/kernel/vfs-file.d.ts +149 -0
  100. package/dist/types/launcher.d.ts +359 -0
  101. package/dist/types/local-proxy-transport.d.ts +39 -0
  102. package/dist/types/meta.d.ts +11 -0
  103. package/dist/types/mount/chunked.d.ts +9 -0
  104. package/dist/types/mount/connection.d.ts +35 -0
  105. package/dist/types/mount/driver.d.ts +50 -0
  106. package/dist/types/mount/fsa.d.ts +26 -0
  107. package/dist/types/mount/fstab.d.ts +17 -0
  108. package/dist/types/mount/host.d.ts +24 -0
  109. package/dist/types/mount/hostfs.d.ts +129 -0
  110. package/dist/types/mount/media.d.ts +8 -0
  111. package/dist/types/mount/medium.d.ts +12 -0
  112. package/dist/types/mount/mount-fs.d.ts +136 -0
  113. package/dist/types/mount/protocol.d.ts +140 -0
  114. package/dist/types/mount/syscall.d.ts +27 -0
  115. package/dist/types/mount/tmpfs.d.ts +2 -0
  116. package/dist/types/node/loopback.d.ts +11 -0
  117. package/dist/types/node/memory-root.d.ts +2 -0
  118. package/dist/types/node/ws-diagnose.d.ts +4 -0
  119. package/dist/types/node.d.ts +85 -0
  120. package/dist/types/process/fd-metadata.d.ts +4 -0
  121. package/dist/types/process/js/async-sab.d.ts +15 -0
  122. package/dist/types/process/js/js-children.d.ts +63 -0
  123. package/dist/types/process/js/js-context.d.ts +133 -0
  124. package/dist/types/process/js/js-dev.d.ts +50 -0
  125. package/dist/types/process/js/js-exit.d.ts +15 -0
  126. package/dist/types/process/js/js-fetch.d.ts +2 -0
  127. package/dist/types/process/js/js-io.d.ts +81 -0
  128. package/dist/types/process/js/js-kernel.d.ts +61 -0
  129. package/dist/types/process/js/js-net.d.ts +42 -0
  130. package/dist/types/process/js/js-proc.d.ts +31 -0
  131. package/dist/types/process/js/js-run.d.ts +35 -0
  132. package/dist/types/process/js/js-sync.d.ts +86 -0
  133. package/dist/types/process/js/js-tty.d.ts +30 -0
  134. package/dist/types/process/js/js-websocket.d.ts +21 -0
  135. package/dist/types/process/kernel-streams.d.ts +196 -0
  136. package/dist/types/process/process-fds.d.ts +95 -0
  137. package/dist/types/process/process-locks.d.ts +29 -0
  138. package/dist/types/process/process-pty.d.ts +20 -0
  139. package/dist/types/process/process-signals.d.ts +33 -0
  140. package/dist/types/process/procfs.d.ts +41 -0
  141. package/dist/types/process/wasi/dylink.d.ts +9 -0
  142. package/dist/types/process/wasi/slicc-lock.d.ts +26 -0
  143. package/dist/types/process/wasi/slicc-sem.d.ts +3 -0
  144. package/dist/types/process/wasi/wasi-abi.d.ts +156 -0
  145. package/dist/types/process/wasi/wasi-fds.d.ts +130 -0
  146. package/dist/types/process/wasi/wasi-files.d.ts +99 -0
  147. package/dist/types/process/wasi/wasi-host.d.ts +104 -0
  148. package/dist/types/process/wasi/wasi-memory.d.ts +16 -0
  149. package/dist/types/process/wasi/wasi-module.d.ts +13 -0
  150. package/dist/types/process/wasi/wasi-poll.d.ts +13 -0
  151. package/dist/types/process/wasi/wasi-procfs.d.ts +36 -0
  152. package/dist/types/process/wasi/wasi-sigmask.d.ts +19 -0
  153. package/dist/types/process/wasi/wasi-signals.d.ts +43 -0
  154. package/dist/types/process/wasi/wasi-termios.d.ts +10 -0
  155. package/dist/types/process/wasi/wasix-fork.d.ts +63 -0
  156. package/dist/types/process/wasi/wasix-linker.d.ts +108 -0
  157. package/dist/types/process/wasi/wasix-sockets.d.ts +9 -0
  158. package/dist/types/process/wasi/wasix-trampoline.d.ts +18 -0
  159. package/dist/types/process/wasi/wasm-functypes.d.ts +25 -0
  160. package/dist/types/process/wasi-errno.d.ts +1 -0
  161. package/dist/types/realm/emscripten-vfs-hook.d.ts +19 -0
  162. package/dist/types/realm/live-vfs-fs.d.ts +186 -0
  163. package/dist/types/realm/sync-fs-dispatch.d.ts +26 -0
  164. package/dist/types/realm/sync-fs-token-registry.d.ts +36 -0
  165. package/dist/types/realm/sync-fs-wire.d.ts +118 -0
  166. package/dist/types/realm/sync-sab-bridge.d.ts +21 -0
  167. package/dist/types/realm/sync-sab-responder.d.ts +16 -0
  168. package/dist/types/realm/sync-sab-wire.d.ts +64 -0
  169. package/dist/types/sealed-relay.d.ts +26 -0
  170. package/dist/types/serve.d.ts +190 -0
  171. package/dist/types/sudo-command.d.ts +4 -0
  172. package/dist/types/sudo.d.ts +105 -0
  173. package/dist/types/testing.d.ts +46 -0
  174. package/dist/types/transport.d.ts +25 -0
  175. package/dist/types/users.d.ts +86 -0
  176. package/dist/types/version.d.ts +3 -0
  177. package/dist/types/websocket-transport.d.ts +12 -0
  178. package/package.json +22 -6
@@ -0,0 +1,18 @@
1
+ import type { FuncSig } from './wasm-functypes.js';
2
+ export type Scalar = 'i32' | 'i64' | 'f32' | 'f64' | 'v128';
3
+ export declare function valueTypes(codes: Uint8Array): Scalar[] | undefined;
4
+ export declare function trampolineBytes(params: Scalar[], results: Scalar[], shared: boolean): Uint8Array<ArrayBuffer>;
5
+ export declare class Trampolines {
6
+ private readonly modules;
7
+ get compiled(): number;
8
+ make(params: Scalar[], results: Scalar[], env: {
9
+ memory: WebAssembly.Memory;
10
+ table: WebAssembly.Table;
11
+ stackPointer: WebAssembly.Global;
12
+ backing: number;
13
+ userData: number;
14
+ }): {
15
+ fn: (...args: unknown[]) => unknown;
16
+ sig: FuncSig;
17
+ };
18
+ }
@@ -0,0 +1,25 @@
1
+ export type ValType = 'i32' | 'i64' | 'f32' | 'f64' | 'other';
2
+ export interface FuncSig {
3
+ params: ValType[];
4
+ results: ValType[];
5
+ }
6
+ export interface ElemSegment {
7
+ offset: number;
8
+ tableBase: boolean;
9
+ funcs: number[];
10
+ }
11
+ export interface FuncTypeInfo {
12
+ sigs: FuncSig[];
13
+ funcs: number[];
14
+ exports: Record<string, number>;
15
+ elems: ElemSegment[];
16
+ }
17
+ export declare function funcTypeInfo(bytes: Uint8Array): FuncTypeInfo;
18
+ export declare class FuncTypes {
19
+ private readonly known;
20
+ private pending;
21
+ register(read: () => Uint8Array | undefined, instance: WebAssembly.Instance, table: WebAssembly.Table | undefined, tableBase: number): void;
22
+ add(info: FuncTypeInfo, instance: WebAssembly.Instance, table: WebAssembly.Table | undefined, tableBase: number): void;
23
+ set(fn: object, sig: FuncSig): void;
24
+ of(fn: object): FuncSig | undefined;
25
+ }
@@ -0,0 +1 @@
1
+ export declare function wasiErrno(code: string): number;
@@ -0,0 +1,19 @@
1
+ import { type LiveCred, type LiveMountFsApi } from './live-vfs-fs.js';
2
+ import type { SyncFsPosixBridge } from './sync-fs-wire.js';
3
+ export interface EmscriptenFsForHook extends LiveMountFsApi {
4
+ chdir(path: string): void;
5
+ chown?(path: string | object, uid: number, gid: number, dontFollow?: boolean): void;
6
+ }
7
+ export interface EmscriptenVfsHandle {
8
+ mounted: string[];
9
+ flush(): void;
10
+ flushDirty(): void;
11
+ invalidate(): void;
12
+ }
13
+ export interface EmscriptenVfsHookDeps {
14
+ bridge: SyncFsPosixBridge;
15
+ cwd: string;
16
+ warn: (message: string) => void;
17
+ cred?: LiveCred;
18
+ }
19
+ export declare function mountVfsIntoEmscripten(Fs: EmscriptenFsForHook, deps: EmscriptenVfsHookDeps): EmscriptenVfsHandle;
@@ -0,0 +1,186 @@
1
+ import { RangedFile, type RangedWatch } from '../fs/ranged.js';
2
+ import type { Cred } from '../kernel/cred.js';
3
+ import { type SyncFsBridgeStat, type SyncFsPosixBridge } from './sync-fs-wire.js';
4
+ export type LiveCred = Cred;
5
+ interface LiveNodeState {
6
+ named?: number | undefined;
7
+ watch?: RangedWatch | undefined;
8
+ stat?: SyncFsBridgeStat;
9
+ statAt?: number;
10
+ data?: Uint8Array;
11
+ len: number;
12
+ loaded: boolean;
13
+ dirty: boolean;
14
+ openCount: number;
15
+ writers?: number;
16
+ orphan?: boolean;
17
+ kept?: boolean;
18
+ id?: string;
19
+ listed?: Map<string, SyncFsBridgeStat>;
20
+ maxFile?: number;
21
+ ranges?: boolean;
22
+ ranged?: RangedFile;
23
+ seen?: number | undefined;
24
+ handle?: number;
25
+ created?: boolean;
26
+ }
27
+ export interface LiveFsNode {
28
+ id: number;
29
+ name: string;
30
+ mode: number;
31
+ parent: LiveFsNode;
32
+ mount: LiveFsMount;
33
+ node_ops: LiveNodeOps;
34
+ stream_ops: LiveStreamOps;
35
+ live: LiveNodeState;
36
+ mounted?: unknown;
37
+ }
38
+ export interface LiveFsStream {
39
+ node: LiveFsNode;
40
+ position: number;
41
+ flags: number;
42
+ fd?: number;
43
+ }
44
+ export interface LiveFsMount {
45
+ opts: LiveFsMountOpts;
46
+ mountpoint: string;
47
+ root: LiveFsNode;
48
+ }
49
+ export interface LiveFsMountOpts {
50
+ root: string;
51
+ bridge: SyncFsPosixBridge;
52
+ }
53
+ interface LiveAttr {
54
+ dev: number;
55
+ ino: number;
56
+ mode: number;
57
+ nlink: number;
58
+ uid: number;
59
+ gid: number;
60
+ rdev: number;
61
+ size: number;
62
+ atime: Date;
63
+ mtime: Date;
64
+ ctime: Date;
65
+ blksize: number;
66
+ blocks: number;
67
+ }
68
+ interface LiveSetAttr {
69
+ mode?: number;
70
+ size?: number;
71
+ atime?: number | Date | null;
72
+ mtime?: number | Date | null;
73
+ timestamp?: number;
74
+ }
75
+ export interface LiveNodeOps {
76
+ getattr(node: LiveFsNode): LiveAttr;
77
+ setattr(node: LiveFsNode, attr: LiveSetAttr): void;
78
+ lookup(parent: LiveFsNode, name: string): LiveFsNode;
79
+ mknod(parent: LiveFsNode, name: string, mode: number, dev: number): LiveFsNode;
80
+ rename(oldNode: LiveFsNode, newDir: LiveFsNode, newName: string): void;
81
+ unlink(parent: LiveFsNode, name: string): void;
82
+ rmdir(parent: LiveFsNode, name: string): void;
83
+ readdir(node: LiveFsNode): string[];
84
+ symlink(parent: LiveFsNode, newName: string, target: string): LiveFsNode;
85
+ readlink(node: LiveFsNode): string;
86
+ }
87
+ export interface LiveStreamOps {
88
+ open(stream: LiveFsStream): void;
89
+ dup(stream: LiveFsStream): void;
90
+ close(stream: LiveFsStream): void;
91
+ read(stream: LiveFsStream, buffer: ArrayBufferView, offset: number, length: number, position: number): number;
92
+ write(stream: LiveFsStream, buffer: ArrayBufferView, offset: number, length: number, position: number): number;
93
+ llseek(stream: LiveFsStream, offset: number, whence: number): number;
94
+ fsync(stream: LiveFsStream): void;
95
+ }
96
+ export interface LiveFsApi {
97
+ createNode(parent: LiveFsNode | null, name: string, mode: number, dev?: number): LiveFsNode;
98
+ isDir(mode: number): boolean;
99
+ isFile(mode: number): boolean;
100
+ isLink(mode: number): boolean;
101
+ ErrnoError: new (errno: number) => Error & {
102
+ errno: number;
103
+ };
104
+ closeStream?(fd: number): void;
105
+ sliccTouch?: boolean;
106
+ sliccReading?: LiveFsNode | undefined;
107
+ sliccCred?: LiveCred;
108
+ nameTable?: (LiveFsNode | null)[] | null;
109
+ hashRemoveNode?(node: LiveFsNode): void;
110
+ lookupNode?(parent: LiveFsNode, name: string): LiveFsNode;
111
+ open?(...args: unknown[]): unknown;
112
+ }
113
+ export interface LiveVfsPlugin {
114
+ mount(mount: LiveFsMount): LiveFsNode;
115
+ node_ops: LiveNodeOps;
116
+ stream_ops: LiveStreamOps;
117
+ flushDirty(): void;
118
+ mounts: Set<LiveFsMount>;
119
+ handled?: Set<LiveFsNode>;
120
+ }
121
+ export declare function liveNodePath(node: LiveFsNode): string;
122
+ export declare function createLiveVfsPlugin(Fs: LiveFsApi): LiveVfsPlugin;
123
+ export declare function flushLiveVfs(Fs: LiveFsApi, plugin: LiveVfsPlugin): void;
124
+ export declare function invalidateLiveVfs(Fs: LiveFsApi, plugin: LiveVfsPlugin): void;
125
+ export interface LiveMountFsApi extends LiveFsApi {
126
+ root?: MemfsRoot;
127
+ rename?(from: string, to: string): void;
128
+ lookupPath?(path: string, opts?: {
129
+ follow?: boolean;
130
+ parent?: boolean;
131
+ }): {
132
+ node: object;
133
+ };
134
+ sliccRename?: true;
135
+ sliccKept?: true;
136
+ sliccStale?: true;
137
+ open?(path: string, flags: number, mode?: number): unknown;
138
+ statfsNode?(node: LiveFsNode): Record<string, number>;
139
+ sliccStatfs?: true;
140
+ filesystems: {
141
+ SLICC_LIVE_FS?: LiveVfsPlugin;
142
+ };
143
+ mkdirTree(path: string): void;
144
+ mount(type: LiveVfsPlugin, opts: LiveFsMountOpts, mountpoint: string): unknown;
145
+ }
146
+ export declare function mountLiveVfsDirs(Fs: LiveMountFsApi, bridge: SyncFsPosixBridge, dirs: readonly string[], warn: (message: string) => void): {
147
+ plugin: LiveVfsPlugin;
148
+ mounted: string[];
149
+ };
150
+ type MemfsRoot = LiveFsNode & {
151
+ contents?: Record<string, unknown>;
152
+ memfs?: LiveNodeOps;
153
+ };
154
+ export declare function liveRoot(Fs: LiveMountFsApi, bridge: SyncFsPosixBridge): void;
155
+ export interface LiveChownFs extends LiveFsApi {
156
+ lookupPath(path: string, opts?: {
157
+ follow?: boolean;
158
+ }): {
159
+ node: object;
160
+ };
161
+ chown?(path: string | object, uid: number, gid: number, dontFollow?: boolean): void;
162
+ fchown?(fd: number, uid: number, gid: number): void;
163
+ getStreamChecked?(fd: number): {
164
+ node: object;
165
+ path?: string;
166
+ };
167
+ }
168
+ export declare function useLiveChown(Fs: LiveChownFs): void;
169
+ export interface LiveLinkFs extends LiveFsApi {
170
+ lookupPath(path: string, opts?: {
171
+ follow?: boolean;
172
+ }): {
173
+ node: object;
174
+ };
175
+ }
176
+ export declare function linkLive(Fs: LiveLinkFs, from: string, to: string, follow: boolean): boolean;
177
+ export interface LiveReadlinkFs extends LiveFsApi {
178
+ lookupPath(path: string, opts?: {
179
+ follow?: boolean;
180
+ }): {
181
+ node: object;
182
+ };
183
+ readlink?(path: string): string;
184
+ }
185
+ export declare function readingLinks(Fs: LiveReadlinkFs): void;
186
+ export {};
@@ -0,0 +1,26 @@
1
+ import { type Guard } from '../fs/dac.js';
2
+ import { type SyncFsTokenEntry } from './sync-fs-token-registry.js';
3
+ import { type SyncFsRequest, type SyncFsResult } from './sync-fs-wire.js';
4
+ export declare function toErrno(err: unknown): SyncFsResult;
5
+ export interface SyncFsStatJson {
6
+ isDirectory: boolean;
7
+ isFile: boolean;
8
+ isSymbolicLink: boolean;
9
+ size: number;
10
+ mode: number;
11
+ mtimeMs: number;
12
+ atimeMs: number;
13
+ ctimeMs: number;
14
+ ino: number;
15
+ nlink?: number;
16
+ dev?: number;
17
+ readonly?: boolean;
18
+ maxFile?: number;
19
+ ranged?: boolean;
20
+ linkable?: boolean;
21
+ version?: string;
22
+ uid?: number;
23
+ gid?: number;
24
+ }
25
+ export declare function guardOf(entry: SyncFsTokenEntry): Guard | undefined;
26
+ export declare function dispatchSyncFs(req: SyncFsRequest): Promise<SyncFsResult>;
@@ -0,0 +1,36 @@
1
+ import type { Created, Dac } from '../fs/dac.js';
2
+ import type { KernelFs } from '../fs/types.js';
3
+ import type { KeptFile } from '../fs/unlinked.js';
4
+ import type { Cred } from '../kernel/cred.js';
5
+ export interface SyncFsTokenEntry {
6
+ fs: KernelFs;
7
+ noLinks?: KernelFs;
8
+ cwd: string;
9
+ statfs?: (path: string) => Promise<{
10
+ quota: number;
11
+ usage: number;
12
+ } | undefined>;
13
+ hold?: (path: string, held: boolean, open: boolean, real?: string, handle?: number) => number | undefined;
14
+ keptFor?: (handle: number) => KeptFile | undefined;
15
+ gate?: <T>(path: string, op: () => Promise<T>) => Promise<T>;
16
+ unlinked?: (path: string) => KeptFile | undefined;
17
+ own?: <T>(path: string, op: () => Promise<T>) => Promise<T>;
18
+ revoked?: (path: string) => boolean;
19
+ renamed?: (from: string, to: string) => void;
20
+ cred?: () => Readonly<Cred>;
21
+ umask?: () => number;
22
+ dac?: Dac;
23
+ pid?: number;
24
+ links?: number;
25
+ created?: Created;
26
+ holdsKept?: (path: string) => Promise<boolean>;
27
+ fresh?: (path: string) => void;
28
+ source?: SourceCheck;
29
+ }
30
+ export interface SourceCheck {
31
+ read(path: string, plain: () => Promise<Uint8Array>): Promise<Uint8Array>;
32
+ open(path: string, real?: string): Promise<void>;
33
+ }
34
+ export declare function mintSyncFsToken(entry: SyncFsTokenEntry): string;
35
+ export declare function resolveSyncFsToken(token: string): SyncFsTokenEntry | null;
36
+ export declare function revokeSyncFsToken(token: string): void;
@@ -0,0 +1,118 @@
1
+ import type { ChangeView } from '../fs/changes.js';
2
+ export declare const SYNC_FS_OPS: readonly ['read', 'write', 'exists', 'stat', 'lstat', 'readdir', 'readdir-stat', 'mkdir', 'rm', 'rename', 'link', 'unlink', 'rmdir', 'symlink', 'readlink', 'chmod', 'utimes', 'lutimes', 'statfs', 'hold', 'create', 'kept', 'pread', 'pwrite', 'append', 'truncate', 'chown', 'lchown', 'access'];
3
+ export type AccessKind = 'open' | 'access' | 'eaccess' | 'follow';
4
+ export declare const HOLD_READ = 4;
5
+ export declare const HOLD_WRITE = 8;
6
+ export declare const HOLD_CREATED = 16;
7
+ export type SyncFsOp = (typeof SYNC_FS_OPS)[number];
8
+ export interface SyncFsRequest {
9
+ token: string;
10
+ op: SyncFsOp;
11
+ path: string;
12
+ body?: Uint8Array;
13
+ arg2?: string;
14
+ mode?: number;
15
+ atimeMs?: number;
16
+ mtimeMs?: number;
17
+ offset?: number;
18
+ length?: number;
19
+ version?: string;
20
+ handle?: number;
21
+ uid?: number;
22
+ gid?: number;
23
+ exclusive?: boolean;
24
+ identity?: boolean;
25
+ now?: boolean;
26
+ nofollow?: boolean;
27
+ opening?: boolean;
28
+ }
29
+ export type SyncFsResult = {
30
+ ok: true;
31
+ kind: 'bytes';
32
+ bytes: Uint8Array;
33
+ } | {
34
+ ok: true;
35
+ kind: 'json';
36
+ json: unknown;
37
+ } | {
38
+ ok: true;
39
+ kind: 'void';
40
+ } | {
41
+ ok: false;
42
+ errno: string;
43
+ message: string;
44
+ };
45
+ export declare const SYNC_FS_REQUEST_TIMEOUT_MS = 25000;
46
+ export interface SyncFsBridgeStat {
47
+ isFile: boolean;
48
+ isDirectory: boolean;
49
+ isSymbolicLink?: boolean;
50
+ size: number;
51
+ mode?: number;
52
+ mtimeMs?: number;
53
+ atimeMs?: number;
54
+ ctimeMs?: number;
55
+ ino?: number;
56
+ nlink?: number;
57
+ dev?: number;
58
+ readonly?: boolean;
59
+ maxFile?: number;
60
+ ranged?: boolean;
61
+ linkable?: boolean;
62
+ version?: string;
63
+ uid?: number;
64
+ gid?: number;
65
+ }
66
+ export interface SyncFsUsage {
67
+ quota: number;
68
+ usage: number;
69
+ }
70
+ export declare function parseSyncFsUsage(json: unknown): SyncFsUsage | null;
71
+ export type SyncFsFileIo = Pick<SyncFsPosixBridge, 'readFile' | 'writeFile' | 'pread' | 'pwrite' | 'truncate' | 'append'>;
72
+ export type ChownArgs = [
73
+ uid: number | undefined,
74
+ gid: number | undefined,
75
+ follow?: boolean,
76
+ handle?: number
77
+ ];
78
+ export interface SyncFsPosixBridge {
79
+ changes?: ChangeView;
80
+ pinned?(handle: number): SyncFsFileIo;
81
+ kept?(handle: number): boolean;
82
+ keptStat?(handle: number): SyncFsBridgeStat;
83
+ readFile(path: string): Uint8Array;
84
+ writeFile(path: string, bytes: Uint8Array, open?: boolean): void;
85
+ stat(path: string): SyncFsBridgeStat;
86
+ lstat(path: string): SyncFsBridgeStat;
87
+ readdir(path: string): string[];
88
+ exists(path: string): boolean;
89
+ mkdir(path: string, mode?: number): void;
90
+ rm(path: string): void;
91
+ rename(from: string, to: string): void;
92
+ link(from: string, to: string, follow?: boolean): void;
93
+ unlink(path: string): void;
94
+ rmdir(path: string): void;
95
+ symlink(target: string, linkPath: string): void;
96
+ readlink(path: string): string;
97
+ chmod(path: string, mode: number): void;
98
+ utimes(path: string, atimeMs: number, mtimeMs: number, now?: boolean): void;
99
+ lutimes(path: string, atimeMs: number, mtimeMs: number, now?: boolean): void;
100
+ hold?(path: string, held: boolean, open?: boolean, handle?: number, want?: number): number | undefined;
101
+ access?(path: string, mode: number, kind?: AccessKind, nofollow?: boolean): void;
102
+ create?(path: string, mode?: number, opening?: boolean): void;
103
+ chown?(path: string, ...rest: ChownArgs): void;
104
+ owners?: boolean;
105
+ links?: boolean;
106
+ readdirStat(path: string): Array<[string, SyncFsBridgeStat | null]>;
107
+ statfs?(path?: string): SyncFsUsage | null;
108
+ pread?(path: string, offset: number, length: number, version?: string): Uint8Array;
109
+ pwrite?(path: string, offset: number, bytes: Uint8Array, transfer?: boolean): void;
110
+ truncate?(path: string, size: number): void;
111
+ append?(path: string, bytes: Uint8Array): number;
112
+ identify?(): void;
113
+ identified?(): SyncFsBridgeStat | null;
114
+ }
115
+ export declare function syncError(code: string, label: string): Error & {
116
+ code: string;
117
+ };
118
+ export declare function parseSyncFsStat(json: unknown): SyncFsBridgeStat | null;
@@ -0,0 +1,21 @@
1
+ import { type SyncFsPosixBridge, type SyncFsResult } from './sync-fs-wire.js';
2
+ import { type SyncSabRequestBody } from './sync-sab-wire.js';
3
+ export interface SabPostLike {
4
+ postMessage(message: unknown, transfer?: Transferable[]): void;
5
+ }
6
+ export interface SyncSabTransport {
7
+ call(req: SyncSabRequestBody, timeoutMs: number, label: string, transfer?: Transferable[]): SyncFsResult;
8
+ }
9
+ export type AtomicsWaitLike = (typedArray: Int32Array, index: number, value: number, timeout?: number) => 'ok' | 'not-equal' | 'timed-out';
10
+ export declare function syncCallCount(): number;
11
+ export declare function createSyncSabTransport(sab: SharedArrayBuffer, port: SabPostLike, deps?: {
12
+ wait?: AtomicsWaitLike;
13
+ now?: () => number;
14
+ memory?: () => number;
15
+ }): SyncSabTransport;
16
+ export declare function createSyncFsSabBridge(transport: SyncSabTransport, opts?: {
17
+ timeoutMs?: number;
18
+ owners?: boolean;
19
+ links?: boolean;
20
+ changes?: SharedArrayBuffer;
21
+ }): SyncFsPosixBridge;
@@ -0,0 +1,16 @@
1
+ import type { WasmSyscall } from '../kernel/process.js';
2
+ import { type SyncFsRequest, type SyncFsResult } from './sync-fs-wire.js';
3
+ export interface SabPortLike {
4
+ addEventListener(type: 'message', handler: (event: MessageEvent) => void): void;
5
+ removeEventListener(type: 'message', handler: (event: MessageEvent) => void): void;
6
+ }
7
+ export interface SyncSabResponderHandle {
8
+ dispose(): void;
9
+ }
10
+ export type SyncSabDispatchRequest = SyncFsRequest | (WasmSyscall & {
11
+ token: string;
12
+ });
13
+ export interface SyncSabResponderOptions {
14
+ dispatch: (req: SyncSabDispatchRequest) => Promise<SyncFsResult>;
15
+ }
16
+ export declare function attachSyncSabResponder(port: SabPortLike, sab: SharedArrayBuffer, token: string, opts: SyncSabResponderOptions): SyncSabResponderHandle;
@@ -0,0 +1,64 @@
1
+ import type { WasmSyscall } from '../kernel/process.js';
2
+ import type { SyncFsRequest, SyncFsResult } from './sync-fs-wire.js';
3
+ export declare const SAB_HEADER_I32 = 18;
4
+ export declare const SAB_CLOCK_OFFSET: number;
5
+ export declare const SAB_CLOCK_I64 = 3;
6
+ export declare const SAB_HEADER_BYTES: number;
7
+ export declare const SAB_I_STATE = 0;
8
+ export declare const SAB_I_SEQ = 1;
9
+ export declare const SAB_I_STATUS = 2;
10
+ export declare const SAB_I_TOTAL = 3;
11
+ export declare const SAB_I_CHUNK = 4;
12
+ export declare const SAB_I_OFFSET = 5;
13
+ export declare const SAB_I_REQ = 6;
14
+ export declare const SAB_I_PUB = 7;
15
+ export declare const SAB_I_SIGNALS = 8;
16
+ export declare const SAB_I_TIMERS = 9;
17
+ export declare const SAB_I_MEMORY = 10;
18
+ export declare const SAB_I_TOTAL_HI = 11;
19
+ export declare const SAB_I_OFFSET_HI = 12;
20
+ export declare const SAB_I_KILLED = 13;
21
+ export declare const SAB_I_ASYNC = 14;
22
+ export declare const SAB_I_STOP = 15;
23
+ export declare const SAB_I_BLOCKED = 16;
24
+ export declare const SAB_I_BLOCKED_HI = 17;
25
+ export type BlockedMask = readonly [number, number];
26
+ export declare function loadBlocked(header: Int32Array): BlockedMask;
27
+ export declare function storeBlocked(header: Int32Array, [low, high]: BlockedMask): void;
28
+ export declare const anyBlocked: (mask: BlockedMask | undefined) => boolean;
29
+ export declare function storeU53(header: Int32Array, lo: number, hi: number, value: number): void;
30
+ export declare function loadU53(header: Int32Array, lo: number, hi: number): number;
31
+ export declare function publishMemory(sab: SharedArrayBuffer, bytes: number): void;
32
+ export declare const SAB_STATE_IDLE = 0;
33
+ export declare const SAB_STATE_PENDING = 1;
34
+ export declare const SAB_STATE_READY = 2;
35
+ export declare const SAB_STATUS_BYTES = 1;
36
+ export declare const SAB_STATUS_JSON = 2;
37
+ export declare const SAB_STATUS_VOID = 3;
38
+ export declare const SAB_STATUS_ERRNO = 4;
39
+ export declare const SAB_DEFAULT_WINDOW_BYTES: number;
40
+ export declare const SAB_MIN_BYTES: number;
41
+ export declare const SYNC_SAB_REQ_MSG = "sync-sab-req";
42
+ export declare const SYNC_SAB_NEXT_MSG = "sync-sab-next";
43
+ export type SyncSabRequestBody = Omit<SyncFsRequest, 'token'> | WasmSyscall;
44
+ export interface SyncSabReqMsg {
45
+ type: typeof SYNC_SAB_REQ_MSG;
46
+ id: number;
47
+ req: SyncSabRequestBody;
48
+ }
49
+ export interface SyncSabNextMsg {
50
+ type: typeof SYNC_SAB_NEXT_MSG;
51
+ id: number;
52
+ offset: number;
53
+ }
54
+ export interface SabEncodedResult {
55
+ status: number;
56
+ payload: Uint8Array;
57
+ }
58
+ export declare function encodeSabResult(result: SyncFsResult): SabEncodedResult;
59
+ export declare function decodeSabResult(status: number, payload: Uint8Array): SyncFsResult;
60
+ export interface SabViews {
61
+ header: Int32Array;
62
+ window: Uint8Array;
63
+ }
64
+ export declare function sabViews(sab: SharedArrayBuffer): SabViews;
@@ -0,0 +1,26 @@
1
+ import type { SealedHook, SealedRequest } from './kernel/sealed.js';
2
+ export interface SealedPort {
3
+ postMessage(message: unknown): void;
4
+ }
5
+ export interface SealedAsk {
6
+ id: number;
7
+ req: SealedRequest;
8
+ }
9
+ export interface SealedReply {
10
+ id: number;
11
+ reply?: object;
12
+ error?: string;
13
+ }
14
+ export interface SealedAbort {
15
+ id: number;
16
+ reason: unknown;
17
+ }
18
+ export declare function sealedAsker(port: SealedPort): {
19
+ hook: SealedHook;
20
+ answer(reply: SealedReply): void;
21
+ };
22
+ export interface SealedAnswerer {
23
+ handle(data: unknown): boolean;
24
+ close(): void;
25
+ }
26
+ export declare function sealedAnswerer(port: SealedPort, hook: SealedHook | undefined): SealedAnswerer;