@ai-ecoverse/slicc-kernel 1.143.5 → 1.144.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 (43) hide show
  1. package/README.md +15 -7
  2. package/dist/driver-worker.js +5 -1
  3. package/dist/driver-worker.js.map +2 -2
  4. package/dist/index.js +5 -1
  5. package/dist/index.js.map +2 -2
  6. package/dist/kernel-worker.js +7830 -7524
  7. package/dist/kernel-worker.js.map +4 -4
  8. package/dist/meta.js +1 -1
  9. package/dist/meta.js.map +2 -2
  10. package/dist/node-driver-worker.js +5 -1
  11. package/dist/node-driver-worker.js.map +2 -2
  12. package/dist/node-process-worker.js +212 -35
  13. package/dist/node-process-worker.js.map +3 -3
  14. package/dist/node.js +24174 -23864
  15. package/dist/node.js.map +4 -4
  16. package/dist/process-worker.js +212 -35
  17. package/dist/process-worker.js.map +3 -3
  18. package/dist/types/client/attach.d.ts +3 -0
  19. package/dist/types/client/protocol.d.ts +3 -0
  20. package/dist/types/client/serve-client.d.ts +1 -1
  21. package/dist/types/cron/crontab.d.ts +13 -1
  22. package/dist/types/cron/service.d.ts +2 -0
  23. package/dist/types/fs/changes.d.ts +4 -0
  24. package/dist/types/fs/dac.d.ts +2 -0
  25. package/dist/types/fs/meta.d.ts +4 -0
  26. package/dist/types/fs/opfs.d.ts +10 -0
  27. package/dist/types/fs/remote.d.ts +4 -0
  28. package/dist/types/fs/types.d.ts +4 -0
  29. package/dist/types/kernel/clipboard.d.ts +3 -2
  30. package/dist/types/kernel/host.d.ts +5 -0
  31. package/dist/types/kernel/proc-info.d.ts +1 -0
  32. package/dist/types/kernel/process.d.ts +1 -1
  33. package/dist/types/kernel/rename-log.d.ts +14 -0
  34. package/dist/types/kernel/sealed.d.ts +8 -3
  35. package/dist/types/kernel/vfs-file.d.ts +1 -0
  36. package/dist/types/launcher.d.ts +12 -1
  37. package/dist/types/process/wasi/wasi-fds.d.ts +4 -1
  38. package/dist/types/process/wasi/wasi-files.d.ts +2 -0
  39. package/dist/types/realm/live-vfs-fs.d.ts +8 -0
  40. package/dist/types/realm/sync-fs-token-registry.d.ts +5 -0
  41. package/dist/types/realm/sync-fs-wire.d.ts +7 -2
  42. package/dist/types/sudo.d.ts +2 -1
  43. package/package.json +7 -7
@@ -27,6 +27,7 @@ export interface SpawnOptions {
27
27
  stdin?: string | Uint8Array;
28
28
  group?: 'new';
29
29
  pgid?: number;
30
+ tag?: string;
30
31
  onStdout?: (bytes: Uint8Array) => void;
31
32
  onStderr?: (bytes: Uint8Array) => void;
32
33
  }
@@ -46,6 +47,7 @@ export interface ClientRunOptions {
46
47
  user?: string | number;
47
48
  env?: Record<string, string>;
48
49
  stdin?: string | Uint8Array;
50
+ tag?: string;
49
51
  onStdout?: (text: string) => void;
50
52
  onStderr?: (text: string) => void;
51
53
  }
@@ -62,6 +64,7 @@ export interface ClientTerminalOptions {
62
64
  env?: Record<string, string>;
63
65
  cols?: number;
64
66
  rows?: number;
67
+ tag?: string;
65
68
  onData?: (bytes: Uint8Array) => void;
66
69
  }
67
70
  export interface ClientTerminal {
@@ -21,6 +21,7 @@ export interface SpawnRequestOptions {
21
21
  env?: Record<string, string>;
22
22
  stdin?: Uint8Array;
23
23
  pgid?: number;
24
+ tag?: string;
24
25
  }
25
26
  export interface TerminalRequestOptions {
26
27
  cwd?: string;
@@ -28,6 +29,7 @@ export interface TerminalRequestOptions {
28
29
  env?: Record<string, string>;
29
30
  cols?: number;
30
31
  rows?: number;
32
+ tag?: string;
31
33
  }
32
34
  export type TerminalAction = {
33
35
  action: 'write';
@@ -139,6 +141,7 @@ export interface ProcessEntry {
139
141
  uid?: number;
140
142
  gid?: number;
141
143
  tag?: string;
144
+ tags?: string[];
142
145
  }
143
146
  export interface MessagePortLike {
144
147
  postMessage(message: unknown, transfer?: Transferable[]): void;
@@ -1,5 +1,5 @@
1
1
  import type { RealmTransport } from '../kernel/net/transport.js';
2
- import type { Launcher } from '../launcher.js';
2
+ import { type Launcher } from '../launcher.js';
3
3
  import { type LockManagerLike, type MessagePortLike } from './protocol.js';
4
4
  export interface ClientHost {
5
5
  scope?: 'transport';
@@ -2,6 +2,17 @@ import type { KernelFs } from '../fs/types.js';
2
2
  import type { Cred } from '../kernel/cred.js';
3
3
  import type { Account } from '../users.js';
4
4
  export declare const CRONTAB_MAX: number;
5
+ export declare const TAGS_PATH = "/var/spool/cron/tags";
6
+ export interface JobTags {
7
+ tags: string[];
8
+ base: number;
9
+ }
10
+ export interface CrontabCaller {
11
+ tags?: readonly string[] | undefined;
12
+ base?: number | undefined;
13
+ }
14
+ export type TableTags = Record<string, Record<string, JobTags>>;
15
+ export declare function readTags(fs: KernelFs): Promise<TableTags>;
5
16
  export interface CrontabCall {
6
17
  op: 'proc-crontab';
7
18
  action: 'list' | 'remove' | 'install';
@@ -22,6 +33,7 @@ export declare function crontabCall(req: Partial<CrontabCall>): CrontabCall | un
22
33
  export declare class Crontabs {
23
34
  private readonly o;
24
35
  constructor(options: CrontabsOptions);
25
- request(cred: Readonly<Cred>, call: CrontabCall): Promise<CrontabResult>;
36
+ request(cred: Readonly<Cred>, call: CrontabCall, caller?: CrontabCaller): Promise<CrontabResult>;
37
+ private retag;
26
38
  private install;
27
39
  }
@@ -21,6 +21,8 @@ export interface CronRun {
21
21
  cwd: string;
22
22
  env: Record<string, string>;
23
23
  output: (bytes: Uint8Array) => void;
24
+ tags?: readonly string[];
25
+ tagBase?: number;
24
26
  }
25
27
  export interface CronHost {
26
28
  fs: KernelFs;
@@ -1,4 +1,5 @@
1
1
  export declare const SHARED_TTL_MS = 100;
2
+ export declare const RENAME_WAIT_MS = 100;
2
3
  export declare const CHANGES_BYTES: number;
3
4
  export declare function changeHash(path: string): number;
4
5
  export declare class FileChanges {
@@ -8,6 +9,7 @@ export declare class FileChanges {
8
9
  dirtied(delta: number): void;
9
10
  foreign(on: boolean): void;
10
11
  flush(): void;
12
+ renamed(): number;
11
13
  publish(...paths: string[]): void;
12
14
  }
13
15
  export declare class ChangeView {
@@ -16,6 +18,8 @@ export declare class ChangeView {
16
18
  now(): number;
17
19
  clean(): boolean;
18
20
  foreign(): boolean;
21
+ renames(): number;
22
+ awaitRename(seen: number, ms: number): number;
19
23
  changedSince(seen: number, path: string): {
20
24
  now: number;
21
25
  changed: boolean;
@@ -20,8 +20,10 @@ export declare class Dac {
20
20
  private readonly seen;
21
21
  private suppressed;
22
22
  tagOf: (pid: number) => string | undefined;
23
+ fenced: (pid: number, path: string) => boolean;
23
24
  constructor(mode: 'report' | 'enforce', hook?: DenialHook, log?: (line: string) => void);
24
25
  get enforcing(): boolean;
26
+ fence(denial: Denial): never;
25
27
  denied(given: Denial): void;
26
28
  private note;
27
29
  }
@@ -70,6 +70,10 @@ export declare class MemoryMeta implements MetaStore {
70
70
  interface Invalidation {
71
71
  paths?: readonly string[];
72
72
  trees?: readonly string[];
73
+ moved?: {
74
+ from: string;
75
+ to: string;
76
+ };
73
77
  }
74
78
  export declare class IndexedDbMeta implements MetaStore {
75
79
  private readonly db;
@@ -138,7 +138,17 @@ export declare class OpfsFs implements KernelFs {
138
138
  pwrite(path: string, offset: number, bytes: Uint8Array): Promise<void>;
139
139
  private keptFor;
140
140
  private writeAt;
141
+ private readonly fileWrites;
142
+ private readonly movingFiles;
143
+ private writesIdle;
144
+ private writeBlocked;
145
+ private renamesInFlight;
146
+ private writeWaits;
147
+ private writeEnded;
148
+ private writesDrained;
149
+ private movingFile;
141
150
  truncate(path: string, size: number): Promise<void>;
151
+ private truncated;
142
152
  writeSession(path: string, truncate: boolean): Promise<WriteSession>;
143
153
  readFile(path: string): Promise<string>;
144
154
  private writeTarget;
@@ -1,6 +1,10 @@
1
1
  export interface RemoteChange {
2
2
  paths: readonly string[];
3
3
  trees: readonly string[];
4
+ moved?: {
5
+ from: string;
6
+ to: string;
7
+ };
4
8
  }
5
9
  export interface PeerRename {
6
10
  from: string;
@@ -94,6 +94,10 @@ export interface KernelFs {
94
94
  remoteChanges?(listener: (change: {
95
95
  paths: readonly string[];
96
96
  trees?: readonly string[];
97
+ moved?: {
98
+ from: string;
99
+ to: string;
100
+ };
97
101
  }) => void): () => void;
98
102
  peers?(): Peers | undefined;
99
103
  crossings?(mounted: (path: string) => boolean): void;
@@ -10,6 +10,7 @@ export interface ClipboardStamp {
10
10
  gid: number;
11
11
  users: UsersMode;
12
12
  tag?: string;
13
+ tags?: string[];
13
14
  }
14
15
  export interface ClipboardHook {
15
16
  read(stamp: ClipboardStamp): Promise<string>;
@@ -41,8 +42,8 @@ export declare class ClipboardBroker {
41
42
  readonly hook: ClipboardHook | undefined;
42
43
  readonly users: UsersMode;
43
44
  readonly timeoutMs: number;
44
- readonly tagOf: (pid: number) => string | undefined;
45
- constructor(hook: ClipboardHook | undefined, users: UsersMode, timeoutMs?: number, tagOf?: (pid: number) => string | undefined);
45
+ readonly tagOf: (pid: number) => readonly string[] | undefined;
46
+ constructor(hook: ClipboardHook | undefined, users: UsersMode, timeoutMs?: number, tagOf?: (pid: number) => readonly string[] | undefined);
46
47
  ask<T>(work: (hook: ClipboardHook) => Promise<T>): Promise<T>;
47
48
  open(access: OpenAccess, stamp: ClipboardStamp): OpenFile;
48
49
  }
@@ -89,6 +89,11 @@ export interface SpawnWasmOptions {
89
89
  quota: number;
90
90
  usage: number;
91
91
  } | undefined>;
92
+ renames?: (since: number, held: readonly string[]) => {
93
+ now: number;
94
+ renames: Array<[string, string]>;
95
+ };
96
+ renameSeq?: (from: string, to: string) => number | undefined;
92
97
  mounts?: () => MountLine[];
93
98
  mount?: WasmProcessOptions['mount'];
94
99
  umount?: WasmProcessOptions['umount'];
@@ -26,6 +26,7 @@ export interface ProcessInfo {
26
26
  sigCgt?: number;
27
27
  sigBlk?: number;
28
28
  tag?: string;
29
+ tags?: string[];
29
30
  }
30
31
  export interface MountLine {
31
32
  type: string;
@@ -23,7 +23,7 @@ import type { MountLine, ProcessListing } from './proc-info.js';
23
23
  import type { DlState, ForkState } from './protocol.js';
24
24
  import { type PtySyscall, type PtyTable } from './pty.js';
25
25
  import { type RunRequest } from './run-child.js';
26
- import type { SealedBroker, SealedCaller } from './sealed.js';
26
+ import { type SealedBroker, type SealedCaller } from './sealed.js';
27
27
  import { type SemSyscall, type SemTable } from './sem.js';
28
28
  import { type DefaultAction, type SigInfo } from './signals.js';
29
29
  import { LoopbackNet } from './socket.js';
@@ -0,0 +1,14 @@
1
+ import type { FileChanges } from '../fs/changes.js';
2
+ export declare const RENAME_LOG_SIZE = 4096;
3
+ export interface RenamesSince {
4
+ now: number;
5
+ renames: Array<[string, string]>;
6
+ }
7
+ export declare class RenameLog {
8
+ private readonly changes;
9
+ private readonly entries;
10
+ constructor(changes: FileChanges);
11
+ add(from: string, to: string): number;
12
+ seqOf(from: string, to: string): number | undefined;
13
+ since(seen: number, held: readonly string[]): RenamesSince;
14
+ }
@@ -18,7 +18,12 @@ export interface SealedCaller {
18
18
  groups: number[];
19
19
  users: UsersMode;
20
20
  tag?: string;
21
+ tags?: string[];
21
22
  }
23
+ export declare function tagFields(tags: readonly string[] | undefined): {
24
+ tag?: string;
25
+ tags?: string[];
26
+ };
22
27
  export type SealedRequest = {
23
28
  v: 1;
24
29
  op: string;
@@ -63,15 +68,15 @@ export declare class SealedBroker {
63
68
  readonly hook: SealedHook | undefined;
64
69
  readonly users: UsersMode;
65
70
  readonly timeoutMs: number;
66
- readonly tagOf: (pid: number) => string | undefined;
71
+ readonly tagOf: (pid: number) => readonly string[] | undefined;
67
72
  readonly tickets: TicketBook;
68
73
  readonly sessions: SessionScrubs;
69
74
  userOf: (uid: number) => Promise<string | undefined>;
70
- constructor(hook: SealedHook | undefined, users: UsersMode, timeoutMs?: number, tagOf?: (pid: number) => string | undefined);
75
+ constructor(hook: SealedHook | undefined, users: UsersMode, timeoutMs?: number, tagOf?: (pid: number) => readonly string[] | undefined);
71
76
  stamp(ids: {
72
77
  pid: number;
73
78
  ppid: number;
74
- }, cred: Readonly<Cred>, tag: string | undefined): Promise<SealedCaller>;
79
+ }, cred: Readonly<Cred>, tags: readonly string[] | undefined): Promise<SealedCaller>;
75
80
  consume(fields: ConsumeFields): Promise<Swap | undefined>;
76
81
  sessionMaterialize(fields: SessionFields, now?: number): Promise<Record<string, string> | undefined>;
77
82
  sessionAnchors(fields: SessionAnchorFields): Promise<Anchors | undefined>;
@@ -101,6 +101,7 @@ export declare class VfsNodes implements UnlinkHolder {
101
101
  private readonly byId;
102
102
  keepsOnDisk: boolean;
103
103
  changed: ((path: string) => void) | undefined;
104
+ movedAway: ((from: string, to: string) => void) | undefined;
104
105
  dirtied: ((delta: number) => void) | undefined;
105
106
  private readonly fs;
106
107
  readonly entries: Map<string, Promise<unknown>>;
@@ -98,6 +98,8 @@ export interface RunOptions {
98
98
  pgid?: number;
99
99
  user?: string | number | Account;
100
100
  tag?: string;
101
+ tags?: readonly string[];
102
+ tagBase?: number;
101
103
  login?: boolean;
102
104
  }
103
105
  export interface TerminalOptions {
@@ -107,6 +109,8 @@ export interface TerminalOptions {
107
109
  rows?: number;
108
110
  user?: string | number | Account;
109
111
  tag?: string;
112
+ tags?: readonly string[];
113
+ tagBase?: number;
110
114
  onData: (bytes: Uint8Array) => void;
111
115
  }
112
116
  export interface TerminalSession {
@@ -140,6 +144,8 @@ interface Target {
140
144
  copy?: string;
141
145
  }
142
146
  export declare function tagOption(tag: unknown): void;
147
+ export declare function withTag(tags: readonly string[] | undefined, tag: string | undefined): readonly string[] | undefined;
148
+ export declare function cronPath(path: string): boolean;
143
149
  export declare function expandDefaults(defaults: Readonly<Record<string, string>> | undefined, env: Readonly<Record<string, string>>): Record<string, string>;
144
150
  export declare class Launcher {
145
151
  readonly fs: KernelFs;
@@ -179,6 +185,7 @@ export declare class Launcher {
179
185
  private readonly described;
180
186
  private readonly creds;
181
187
  private readonly tags;
188
+ private readonly tagBases;
182
189
  private readonly links;
183
190
  private readonly freshModules;
184
191
  private readonly granted;
@@ -202,6 +209,7 @@ export declare class Launcher {
202
209
  readonly hostname: string;
203
210
  readonly watchers: FsWatchers;
204
211
  private readonly changes;
212
+ private readonly renameLog;
205
213
  readonly cwds: CwdTable;
206
214
  private readonly cwdSlots;
207
215
  private readonly pnpmHome;
@@ -362,6 +370,8 @@ export declare class Launcher {
362
370
  private imageOf;
363
371
  credOf(pid: number): Cred;
364
372
  tagOf(pid: number): string | undefined;
373
+ tagsOf(pid: number): readonly string[] | undefined;
374
+ private wireDac;
365
375
  private released;
366
376
  private signalMasksOf;
367
377
  private controlsJobs;
@@ -403,7 +413,7 @@ export declare class Launcher {
403
413
  private terminalAccount;
404
414
  private identity;
405
415
  fsFor(tag: string | undefined): KernelFs;
406
- isWriter(tag: string | undefined): boolean;
416
+ isWriter(tags: readonly string[] | undefined, base?: number): boolean;
407
417
  private stackFor;
408
418
  private flushingPeers;
409
419
  private rewritten;
@@ -415,6 +425,7 @@ export declare class Launcher {
415
425
  private readonly named;
416
426
  private commandNames;
417
427
  private entryTarget;
428
+ private moved;
418
429
  private processChain;
419
430
  private starting;
420
431
  openTerminal(argv: string[], options: TerminalOptions): Promise<TerminalSession>;
@@ -37,7 +37,10 @@ export declare class WasiFds {
37
37
  private readonly ids;
38
38
  private readonly kernel;
39
39
  private readonly fs;
40
+ private renamesSeen;
40
41
  constructor(kernel: WasiKernel, fs: SyncFsPosixBridge);
42
+ ownRename(seq: number | undefined): void;
43
+ followRenames(missing?: boolean): boolean;
41
44
  setup(cwd: string, inherited: ReadonlyArray<{
42
45
  fd: number;
43
46
  kind?: KernelFdKind;
@@ -117,7 +120,7 @@ export declare class WasiFds {
117
120
  private inoOf;
118
121
  private survives;
119
122
  private detach;
120
- renamed(from: string, to: string, replacedLinked?: SyncFsBridgeStat): void;
123
+ renamed(from: string, to: string, replacedLinked?: SyncFsBridgeStat, foreign?: boolean): void;
121
124
  held: HeldCwd | undefined;
122
125
  private cwdEntry;
123
126
  goneCwd(dir: Extract<WasiEntry, {
@@ -23,8 +23,10 @@ export declare class FileBuffer {
23
23
  private seen;
24
24
  maxFile: number | undefined;
25
25
  handle: number | undefined;
26
+ moved: ((missing: boolean) => boolean) | undefined;
26
27
  constructor(fs: SyncFsFileIo, path: string, empty: boolean, maxFile?: number, size?: number, version?: string, watch?: RangedWatch);
27
28
  get path(): string;
29
+ private retried;
28
30
  set path(path: string);
29
31
  get isRanged(): boolean;
30
32
  get pin(): string | undefined;
@@ -113,7 +113,15 @@ export interface LiveFsApi {
113
113
  sliccOpenFifo?(stream: LiveFsStream, path: string): void;
114
114
  nameTable?: (LiveFsNode | null)[] | null;
115
115
  hashRemoveNode?(node: LiveFsNode): void;
116
+ hashAddNode?(node: LiveFsNode): void;
117
+ hashName?(parentId: number, name: string): number;
116
118
  lookupNode?(parent: LiveFsNode, name: string): LiveFsNode;
119
+ lookupPath?(path: string, opts?: {
120
+ follow?: boolean;
121
+ parent?: boolean;
122
+ }): {
123
+ node: object;
124
+ };
117
125
  open?(...args: unknown[]): unknown;
118
126
  }
119
127
  export interface LiveVfsPlugin {
@@ -17,6 +17,11 @@ export interface SyncFsTokenEntry {
17
17
  own?: <T>(path: string, op: () => Promise<T>) => Promise<T>;
18
18
  revoked?: (path: string) => boolean;
19
19
  renamed?: (from: string, to: string) => void;
20
+ renames?: (since: number, held: readonly string[]) => {
21
+ now: number;
22
+ renames: Array<[string, string]>;
23
+ };
24
+ renameSeq?: (from: string, to: string) => number | undefined;
20
25
  cred?: () => Readonly<Cred>;
21
26
  umask?: () => number;
22
27
  dac?: Dac;
@@ -1,5 +1,5 @@
1
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', 'copy', 'unlink', 'rmdir', 'symlink', 'readlink', 'chmod', 'utimes', 'lutimes', 'statfs', 'hold', 'create', 'mkfifo', 'kept', 'pread', 'pwrite', 'append', 'truncate', 'chown', 'lchown', 'access'];
2
+ export declare const SYNC_FS_OPS: readonly ['read', 'write', 'exists', 'stat', 'lstat', 'readdir', 'readdir-stat', 'mkdir', 'rm', 'rename', 'link', 'copy', 'unlink', 'rmdir', 'symlink', 'readlink', 'chmod', 'utimes', 'lutimes', 'statfs', 'hold', 'create', 'mkfifo', 'kept', 'pread', 'pwrite', 'append', 'truncate', 'chown', 'lchown', 'access', 'renames'];
3
3
  export type AccessKind = 'open' | 'access' | 'eaccess' | 'follow';
4
4
  export declare const HOLD_READ = 4;
5
5
  export declare const HOLD_WRITE = 8;
@@ -99,7 +99,7 @@ export interface SyncFsPosixBridge {
99
99
  exists(path: string): boolean;
100
100
  mkdir(path: string, mode?: number): void;
101
101
  rm(path: string): void;
102
- rename(from: string, to: string): void;
102
+ rename(from: string, to: string): number | undefined | void;
103
103
  link(from: string, to: string, follow?: boolean): void;
104
104
  unlink(path: string): void;
105
105
  rmdir(path: string): void;
@@ -128,6 +128,11 @@ export interface SyncFsPosixBridge {
128
128
  identify?(): void;
129
129
  identifyNext?(): void;
130
130
  identified?(): SyncFsBridgeStat | null;
131
+ renames?(since: number, held: readonly string[]): SyncFsRenames;
132
+ }
133
+ export interface SyncFsRenames {
134
+ now: number;
135
+ renames: Array<[string, string]>;
131
136
  }
132
137
  export declare function syncError(code: string, label: string): Error & {
133
138
  code: string;
@@ -17,6 +17,7 @@ export interface SudoRequest {
17
17
  cwd: string;
18
18
  pid: number;
19
19
  tag?: string;
20
+ tags?: string[];
20
21
  tty?: string;
21
22
  createdAt: number;
22
23
  expiresAt: number;
@@ -53,7 +54,7 @@ export type SudoResult = {
53
54
  export interface SudoCaller {
54
55
  cred: Cred;
55
56
  pid: number;
56
- tag?: string | undefined;
57
+ tags?: readonly string[] | undefined;
57
58
  tty?: string | null | undefined;
58
59
  }
59
60
  interface Rule {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-ecoverse/slicc-kernel",
3
- "version": "1.143.5",
3
+ "version": "1.144.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",
@@ -66,23 +66,23 @@
66
66
  "@ai-ecoverse/py-numpy": "2.5.4-4",
67
67
  "@ai-ecoverse/slicc-node": "2.5.2",
68
68
  "@ai-ecoverse/slicc-scrub": "1.0.0",
69
- "@ai-ecoverse/slicc-shared-web": "1.29.16",
69
+ "@ai-ecoverse/slicc-shared-web": "1.30.2",
70
70
  "@ai-ecoverse/wasi-cargo": "0.99.0-6",
71
71
  "@ai-ecoverse/wasi-pnpm": "12.9.1-20",
72
72
  "@ai-ecoverse/wasi-ripgrep": "15.2.0-5",
73
73
  "@ai-ecoverse/wasi-rustc": "1.98.1-10",
74
74
  "@ai-ecoverse/wasi-zig": "0.16.0-20",
75
75
  "@ai-ecoverse/wasix-python": "3.15.0-5",
76
- "@ai-ecoverse/wasm-bash": "5.3.0-22",
76
+ "@ai-ecoverse/wasm-bash": "5.3.0-23",
77
77
  "@ai-ecoverse/wasm-coreutils": "9.12.0-12",
78
- "@ai-ecoverse/wasm-curl": "8.22.0-8",
78
+ "@ai-ecoverse/wasm-curl": "8.22.0-9",
79
79
  "@ai-ecoverse/wasm-git": "2.55.0-18",
80
- "@ai-ecoverse/wasm-gmake": "4.4.1-8",
80
+ "@ai-ecoverse/wasm-gmake": "4.4.1-9",
81
81
  "@ai-ecoverse/wasm-procps": "4.0.7-4",
82
- "@ai-ecoverse/wasm-sqlite3": "3.54.0-6",
82
+ "@ai-ecoverse/wasm-sqlite3": "3.54.0-7",
83
83
  "@ai-ecoverse/wasm-tar": "1.35.0-8",
84
84
  "@ai-ecoverse/wasm-tls-engine": "4.2.0-7",
85
- "@ai-ecoverse/wasm-tree": "2.3.2-6",
85
+ "@ai-ecoverse/wasm-tree": "2.3.2-7",
86
86
  "@ai-ecoverse/wasm-util-linux": "2.42.4-5",
87
87
  "@biomejs/biome": "2.5.15",
88
88
  "@types/node": "24.19.2",