@ai-ecoverse/slicc-bios 1.46.4 → 1.47.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 CHANGED
@@ -25,6 +25,14 @@ Seven's documents are never kept in the back/forward cache. The service worker s
25
25
 
26
26
  Every other OPFS file is served sandboxed: `Content-Security-Policy: sandbox allow-scripts allow-forms allow-popups allow-modals; frame-ancestors 'self'` (without `allow-same-origin`), `X-Content-Type-Options: nosniff`, `Cross-Origin-Resource-Policy: same-origin`, and no COOP or COEP. An HTML page there still renders and runs its scripts, but in an opaque origin, with no access to seven's IndexedDB, `localStorage`, OPFS or keys. JavaScript and TypeScript files there are served as `text/plain` and wasm as `application/octet-stream`, and a request for a script, a worker or a worklet there gets a 403, so none of seven's pages can import, run or instantiate them. Bare imports are resolved only in the live paths. Kernel symlinks live in the kernel's metadata, not in OPFS, so the service worker never follows one. The kernel itself reads binaries from OPFS directly, not through the service worker.
27
27
 
28
+ **Requests the service worker never answers skip it (#728).** When it installs, `sw.js` adds static routes (`InstallEvent.addRoutes`, in Chromium):
29
+ - **Straight to the network:** an `https:` request to any host other than seven's own, `localhost` or a `.localhost` name (with or without a trailing dot). The worker isn't started for it.
30
+ - **To the fetch handler, as before:** everything else. That covers seven's host on any scheme or port, every `localhost` and kernel-port form, and every `http:` request.
31
+
32
+ The handler passes the routed requests through untouched anyway, so the only change is that they don't wake the worker. Before this, the update check's release-notes fetches to npm and GitHub kept an old worker busy, or restarted it while it was stopping for an update. Chromium skips the activation check when a stopping worker restarts, so the update stayed `installed`.
33
+
34
+ Every rule's `URLPattern` has all its parts explicit, with no base URL. Where `addRoutes` or `URLPattern` is missing, or Chromium refuses the rules, there are no routes and every request reaches the handler.
35
+
28
36
  ### Next to SLICC 6 (`www.sliccy.ai/7`)
29
37
 
30
38
  Seven can share its origin with another app: on `www.sliccy.ai` the BIOS is `/7/` and SLICC 6 keeps the rest of the origin, the first step of the in-place upgrade from six (#648; the routes are sliccy-ai#51).
@@ -335,7 +343,13 @@ Programs ask seven's page for what only a page can do through the kernel's `/dev
335
343
  - **Tool modules** (capture, audio) export the kernel's hook object `{ kinds, handle }`. `plugged(hook, prompts, extra)` wraps one: only kinds seven lists and gives a prompt for reach it, and its `handle` runs only after seven's gesture check, with the request plus seven's `extra`. A module is a pinned, gated dependency in the base set, since it runs as seven.
336
344
  - **`capture.screen`** (`screencapture`, `@ai-ecoverse/slicc-capture/page`): the same gesture check as `open.url`, with the prompt "Capture the screen?". The prompt's action is Choose, and Chrome's picker comes next. The module captures only through seven's `request.display(constraints)`, which calls `getDisplayMedia` with `audio: false`, `selfBrowserSurface: 'exclude'`, `surfaceSwitching: 'exclude'` and `preferCurrentTab: false`. When the picked surface's capture handle is seven's or the vault's (`slicc-vault`; every seven page sets `setCaptureHandleConfig({ handle: 'slicc-seven', exposeOrigin: true })` for its own origin, first thing at boot), or its origin is protected, seven stops every track and refuses with `EACCES`, `seven doesn't capture its own pages or the vault`. For a tab, seven waits up to 1 s for a handle that arrives after the capture starts. A tab whose handle is still missing, or any surface Chrome doesn't name as a window or a screen, is refused too (`seven can't tell this tab isn't its own or the vault's (it sets no capture handle), so it doesn't capture it; share a window or the screen`): Chrome hides handles in off-the-record profiles, and an older vault sets none, so a missing handle can't prove the tab is safe. That costs every ordinary tab that sets no capture handle, which is most of them; share a window or the screen to capture one. A captured tab that navigates to a page without a handle is stopped the same way. Seven watches for handle changes from the moment the capture starts, so a change during that wait isn't lost. The same holds while the capture is live: when the captured tab's handle changes to seven's, a protected one or none (`capturehandlechange`), seven stops every track, ends the module's capture and refuses, even if a frame was already taken. A cross-origin navigation clears the handle first, so a tab that navigates to seven is usually refused with the missing-handle text. A window or a whole screen that shows seven, and a protected page that sets no capture handle, are the user's choice in the picker. The vault's top-level pages set `slicc-vault` for seven's production origins (slicc-vault ≥ 1.17.0), so they're refused too. A local seven gets no handle from vault-preview. A page that paints before it sets its capture handle can land in a frame taken in that moment, before seven sees the handle. The dismissed texts are `the request to capture the screen was dismissed` and `nobody answered the request to capture the screen within 60 s`.
337
345
  - **`clipboard.write`** (`{"kind":"clipboard.write","type":"image/png"}`, the bytes as the body, an empty reply; `screencapture -c`): `src/seed/clipboard.js` writes one `ClipboardItem` of `image/png`, `text/plain` or `text/html`, with `/dev/clipboard`'s focus rule and refusal text. Other types are `ENOTSUP`. The body is read up to 16 MB; beyond that seven cancels the rest and fails with `EIO`, `seven copies at most 16 MB to the clipboard`.
338
- - Kinds seven doesn't list (`open.file`, `open.download`, `open.reveal`, `clipboard.read`, and audio for now) are `ENOTSUP` before the page sees them.
346
+ - **Audio** (`afplay`, `chime`, `say`, `hear`, `@ai-ecoverse/slicc-audio/page`; kinds `audio.play`, `audio.say`, `audio.voices`, `audio.record`, `audio.transcribe`):
347
+ - **Sound and speech:** `audio.play` ("Play a sound?") and `audio.say` ("Speak aloud?") get the same gesture check as `open.url`.
348
+ - **The microphone:** `audio.record`, and every `audio.transcribe` except a probe or a `whisper` one that sends its own audio, ask "Use the microphone?" on every request, unless the request comes typed in an active tab. The agent is always asked. The browser's microphone permission lasts per origin after the first grant, so it isn't the gate; seven's prompt is. Cancel leaves the microphone unopened.
349
+ - **No prompt:** `audio.voices`; `audio.say` status and warm-up; `audio.transcribe` status, warm-up and supported-language probes; and a `whisper` transcribe of bytes the program sends. Listing microphones (`audio.record` with `devices`) asks like any recording. For `whisper`, seven reads the start of the request's body to see whether it carries audio. Web Speech (`webspeech`) always listens to the microphone and ignores any bytes, so it's always asked, and so is an unknown or missing engine.
350
+ - **Stopping:** an abort (a signal, or the program closing the request) stops a recording at once.
351
+ - **ortllama:** slicc-audio's optional `@ai-ecoverse/slicc-ortllama` isn't in the base set, because the BIOS installer skips lock entries marked `optional` and the in-place base update runs `pnpm install --no-optional`. So `afplay`, `chime` and the Web Speech engines work. The kokoro and whisper engines fail with `sw: nothing listening on kernel port 11435` until an ortllama server runs in the kernel.
352
+ - Kinds seven doesn't list (`open.file`, `open.download`, `open.reveal`, `clipboard.read`) are `ENOTSUP` before the page sees them.
339
353
 
340
354
  ## Network
341
355
 
@@ -592,9 +606,9 @@ A nudge first sends the old worker `{ streams: 'mine' }` and waits for its answe
592
606
 
593
607
  ## Certified packages
594
608
 
595
- Seven certifies a gated package (slicc-kernel, slicc-cdp, slicc-capture, slicc-clipboard, slicc-jsh, mcpcat, and the `wasi-*`, `wasix-*`, `wasm-*` and `py-*` packages) by its integrity: a version is certified when [`src/packages/certs.json`](src/packages/certs.json) (the historic list, with its recorded `exception`s) or one of the lockfiles seven ships (the base set, `/opt/agent`, Tailscale and the catalog's projects) carries it with that integrity. `src/seed/layer.js`'s `certifiedSet()` reads that union in the page, and a user's or a project's install that needs anything else is refused, except an optional catalog package that passes [the gate](#optional-packages), with the dependencies it pins exactly, so a user's own add of a catalog package passes or fails as the panel's Install does. homescoop's certification exceptions apply to every version there, a `certs.json` or lockfile match included, and when they can't be read the version is refused. A pin on main is certified because it reached main through the merge queue, where every integration test ran on it, and because `pins.test.mjs` checks every gated pin is its own repository's release from main. `test/integration/pins.test.mjs` checks the union covers every gated pin with its integrity (Tailscale's project included), and fails when a pinned package's `engines.slicc-kernel` or kernel peer range isn't met by the pinned kernel.
609
+ Seven certifies a gated package (slicc-kernel, slicc-cdp, slicc-audio, slicc-capture, slicc-clipboard, slicc-jsh, mcpcat, and the `wasi-*`, `wasix-*`, `wasm-*` and `py-*` packages) by its integrity: a version is certified when [`src/packages/certs.json`](src/packages/certs.json) (the historic list, with its recorded `exception`s) or one of the lockfiles seven ships (the base set, `/opt/agent`, Tailscale and the catalog's projects) carries it with that integrity. `src/seed/layer.js`'s `certifiedSet()` reads that union in the page, and a user's or a project's install that needs anything else is refused, except an optional catalog package that passes [the gate](#optional-packages), with the dependencies it pins exactly, so a user's own add of a catalog package passes or fails as the panel's Install does. homescoop's certification exceptions apply to every version there, a `certs.json` or lockfile match included, and when they can't be read the version is refused. A pin on main is certified because it reached main through the merge queue, where every integration test ran on it, and because `pins.test.mjs` checks every gated pin is its own repository's release from main. `test/integration/pins.test.mjs` checks the union covers every gated pin with its integrity (Tailscale's project included), and fails when a pinned package's `engines.slicc-kernel` or kernel peer range isn't met by the pinned kernel.
596
610
 
597
- **Provenance** (`pins.test.mjs`, an ordinary integration test): every gated pin in a lockfile seven ships has npm's SLSA provenance for that exact tarball (its subject's sha512 is the lockfile's integrity), built on `refs/heads/main` of its own repository: slicc-kernel, slicc-jsh, slicc-cdp, slicc-capture, slicc-clipboard, mcpcat, wasm-tailscale, slicc-cli for wasi-slicc, and homescoop for the other `wasm-*`, `wasi-*`, `wasix-*` and `py-*`. A homescoop pin that the bundled `certification-exceptions.json` withdraws, or whose `requires` the pins don't meet, fails it too. The test names each pin that fails and why.
611
+ **Provenance** (`pins.test.mjs`, an ordinary integration test): every gated pin in a lockfile seven ships has npm's SLSA provenance for that exact tarball (its subject's sha512 is the lockfile's integrity), built on `refs/heads/main` of its own repository: slicc-kernel, slicc-jsh, slicc-cdp, slicc-audio, slicc-capture, slicc-clipboard, mcpcat, wasm-tailscale, slicc-cli for wasi-slicc, and homescoop for the other `wasm-*`, `wasi-*`, `wasix-*` and `py-*`. A homescoop pin that the bundled `certification-exceptions.json` withdraws, or whose `requires` the pins don't meet, fails it too. The test names each pin that fails and why.
598
612
 
599
613
  ### Renovate keeps the pins current
600
614
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-ecoverse/slicc-bios",
3
- "version": "1.46.4",
3
+ "version": "1.47.1",
4
4
  "description": "Slim loader that boots SLICC into OPFS and serves the UI from there",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -6,6 +6,7 @@
6
6
  "": {
7
7
  "name": "slicc-bios-packages",
8
8
  "dependencies": {
9
+ "@ai-ecoverse/slicc-audio": "1.1.2",
9
10
  "@ai-ecoverse/slicc-browsers": "1.18.14",
10
11
  "@ai-ecoverse/slicc-capture": "1.4.1",
11
12
  "@ai-ecoverse/slicc-cdp": "1.41.20",
@@ -38,6 +39,25 @@
38
39
  "@ai-ecoverse/wasm-xz": "5.8.4-8"
39
40
  }
40
41
  },
42
+ "node_modules/@ai-ecoverse/slicc-audio": {
43
+ "version": "1.1.2",
44
+ "resolved": "https://registry.npmjs.org/@ai-ecoverse/slicc-audio/-/slicc-audio-1.1.2.tgz",
45
+ "integrity": "sha512-h2adfjjUQATjOki/+qsqdYjSRfNDhFIumMReOmtiA2fbCD+//XYqWsmMELdYE/jGMP97jFTFJ1fpvzsddRQ2Ag==",
46
+ "license": "Apache-2.0",
47
+ "bin": {
48
+ "scchime": "host/scchime.mjs",
49
+ "schear": "host/schear.mjs",
50
+ "scplay": "host/scplay.mjs",
51
+ "scsay": "host/scsay.mjs"
52
+ },
53
+ "engines": {
54
+ "node": ">=24",
55
+ "slicc-kernel": ">=1.153.0"
56
+ },
57
+ "optionalDependencies": {
58
+ "@ai-ecoverse/slicc-ortllama": "^1.28.0"
59
+ }
60
+ },
41
61
  "node_modules/@ai-ecoverse/slicc-browsers": {
42
62
  "version": "1.18.14",
43
63
  "resolved": "https://registry.npmjs.org/@ai-ecoverse/slicc-browsers/-/slicc-browsers-1.18.14.tgz",
@@ -98,6 +118,82 @@
98
118
  "node": ">=26"
99
119
  }
100
120
  },
121
+ "node_modules/@ai-ecoverse/slicc-ortllama": {
122
+ "version": "1.28.0",
123
+ "resolved": "https://registry.npmjs.org/@ai-ecoverse/slicc-ortllama/-/slicc-ortllama-1.28.0.tgz",
124
+ "integrity": "sha512-OlnUW6tHnU/xgH4vfMbFCHHW2pc/go/Zvn3g0/r9+ManBicA/Z4+OehYEWpw79QDiy5D0ia6jPqVcjKVs04PDQ==",
125
+ "license": "Apache-2.0",
126
+ "optional": true,
127
+ "dependencies": {
128
+ "@huggingface/jinja": "0.5.10",
129
+ "@huggingface/tokenizers": "0.2.0",
130
+ "@jsquash/webp": "1.5.0",
131
+ "fast-png": "8.0.0",
132
+ "fflate": "0.8.3",
133
+ "jpeg-js": "0.4.4",
134
+ "libopus-wasm": "0.4.1",
135
+ "onnxruntime-web": "1.30.0",
136
+ "ws": "8.22.0"
137
+ },
138
+ "bin": {
139
+ "ortllama": "src/bin.js"
140
+ },
141
+ "engines": {
142
+ "node": ">=24"
143
+ },
144
+ "peerDependencies": {
145
+ "@ai-ecoverse/jev-omni.js": "0.2.0",
146
+ "@ai-ecoverse/kev.js": "1.2.0",
147
+ "@audio/decode-aac": "1.6.0",
148
+ "@audio/encode-aac": "1.2.1",
149
+ "@mediabunny/aac-encoder": "1.62.0",
150
+ "@wllama/wllama": "3.8.1",
151
+ "espeak-ng": "1.0.2",
152
+ "mediabunny": "1.62.0",
153
+ "onnxruntime-node": "1.30.0",
154
+ "phonemize": "2.0.1",
155
+ "phonemizer": "1.2.1",
156
+ "webgpu": "0.6.2"
157
+ },
158
+ "peerDependenciesMeta": {
159
+ "@ai-ecoverse/jev-omni.js": {
160
+ "optional": true
161
+ },
162
+ "@ai-ecoverse/kev.js": {
163
+ "optional": true
164
+ },
165
+ "@audio/decode-aac": {
166
+ "optional": true
167
+ },
168
+ "@audio/encode-aac": {
169
+ "optional": true
170
+ },
171
+ "@mediabunny/aac-encoder": {
172
+ "optional": true
173
+ },
174
+ "@wllama/wllama": {
175
+ "optional": true
176
+ },
177
+ "espeak-ng": {
178
+ "optional": true
179
+ },
180
+ "mediabunny": {
181
+ "optional": true
182
+ },
183
+ "onnxruntime-node": {
184
+ "optional": true
185
+ },
186
+ "phonemize": {
187
+ "optional": true
188
+ },
189
+ "phonemizer": {
190
+ "optional": true
191
+ },
192
+ "webgpu": {
193
+ "optional": true
194
+ }
195
+ }
196
+ },
101
197
  "node_modules/@ai-ecoverse/slicc-spectrum": {
102
198
  "version": "1.104.1",
103
199
  "resolved": "https://registry.npmjs.org/@ai-ecoverse/slicc-spectrum/-/slicc-spectrum-1.104.1.tgz",
@@ -288,6 +384,261 @@
288
384
  "@ai-ecoverse/wasm-less": "*",
289
385
  "@ai-ecoverse/wasm-sed": "*"
290
386
  }
387
+ },
388
+ "node_modules/@huggingface/jinja": {
389
+ "version": "0.5.10",
390
+ "resolved": "https://registry.npmjs.org/@huggingface/jinja/-/jinja-0.5.10.tgz",
391
+ "integrity": "sha512-SgS1D1bglQ94ceD4ZCL6eayUDy9uV1xuyk61OjgSxU5GJh7upqZCKII0JoTYMc6wWsg3JUgaPRX0ElQzXPk3Cw==",
392
+ "license": "MIT",
393
+ "optional": true,
394
+ "engines": {
395
+ "node": ">=18"
396
+ }
397
+ },
398
+ "node_modules/@huggingface/tokenizers": {
399
+ "version": "0.2.0",
400
+ "resolved": "https://registry.npmjs.org/@huggingface/tokenizers/-/tokenizers-0.2.0.tgz",
401
+ "integrity": "sha512-LidMHe1FpcSYH4vcSjXooda34pC0M8m1gmDOv7SQi6Iv+ib1zX7J3sHBCC9/3FPCkn2k1b55FneVqMRxrr99pg==",
402
+ "license": "Apache-2.0",
403
+ "optional": true
404
+ },
405
+ "node_modules/@jsquash/webp": {
406
+ "version": "1.5.0",
407
+ "resolved": "https://registry.npmjs.org/@jsquash/webp/-/webp-1.5.0.tgz",
408
+ "integrity": "sha512-KggLoj2MnRSfIqTeKe1EmbljTX2vuV7mh79k89PCL1pyqiDULcPM1L47twxXt0hkb68F70bXiL31MxsuoZtKFw==",
409
+ "license": "Apache-2.0",
410
+ "optional": true,
411
+ "dependencies": {
412
+ "wasm-feature-detect": "^1.2.11"
413
+ }
414
+ },
415
+ "node_modules/@protobufjs/aspromise": {
416
+ "version": "1.1.2",
417
+ "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
418
+ "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==",
419
+ "license": "BSD-3-Clause",
420
+ "optional": true
421
+ },
422
+ "node_modules/@protobufjs/base64": {
423
+ "version": "1.1.2",
424
+ "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
425
+ "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
426
+ "license": "BSD-3-Clause",
427
+ "optional": true
428
+ },
429
+ "node_modules/@protobufjs/codegen": {
430
+ "version": "2.0.5",
431
+ "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz",
432
+ "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==",
433
+ "license": "BSD-3-Clause",
434
+ "optional": true
435
+ },
436
+ "node_modules/@protobufjs/eventemitter": {
437
+ "version": "1.1.1",
438
+ "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz",
439
+ "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==",
440
+ "license": "BSD-3-Clause",
441
+ "optional": true
442
+ },
443
+ "node_modules/@protobufjs/fetch": {
444
+ "version": "1.1.1",
445
+ "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.1.tgz",
446
+ "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==",
447
+ "license": "BSD-3-Clause",
448
+ "optional": true,
449
+ "dependencies": {
450
+ "@protobufjs/aspromise": "^1.1.1"
451
+ }
452
+ },
453
+ "node_modules/@protobufjs/float": {
454
+ "version": "1.0.2",
455
+ "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
456
+ "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==",
457
+ "license": "BSD-3-Clause",
458
+ "optional": true
459
+ },
460
+ "node_modules/@protobufjs/path": {
461
+ "version": "1.1.2",
462
+ "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
463
+ "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==",
464
+ "license": "BSD-3-Clause",
465
+ "optional": true
466
+ },
467
+ "node_modules/@protobufjs/pool": {
468
+ "version": "1.1.0",
469
+ "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
470
+ "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==",
471
+ "license": "BSD-3-Clause",
472
+ "optional": true
473
+ },
474
+ "node_modules/@protobufjs/utf8": {
475
+ "version": "1.1.2",
476
+ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.2.tgz",
477
+ "integrity": "sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==",
478
+ "license": "BSD-3-Clause",
479
+ "optional": true
480
+ },
481
+ "node_modules/@types/node": {
482
+ "version": "26.6.5",
483
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.5.tgz",
484
+ "integrity": "sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg==",
485
+ "license": "MIT",
486
+ "optional": true,
487
+ "dependencies": {
488
+ "undici-types": "~8.9.0"
489
+ }
490
+ },
491
+ "node_modules/fast-png": {
492
+ "version": "8.0.0",
493
+ "resolved": "https://registry.npmjs.org/fast-png/-/fast-png-8.0.0.tgz",
494
+ "integrity": "sha512-gCysNasJ8KEMgfdYIKd/wTDo6ENK1PWT0RJO7O+0pgmuHPw2O6tA1WvdxFRJoLf9V8yFYpG0FA1YgI8X97OhJA==",
495
+ "license": "MIT",
496
+ "optional": true,
497
+ "dependencies": {
498
+ "fflate": "^0.8.2",
499
+ "iobuffer": "^6.0.1"
500
+ }
501
+ },
502
+ "node_modules/fflate": {
503
+ "version": "0.8.3",
504
+ "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz",
505
+ "integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==",
506
+ "license": "MIT",
507
+ "optional": true
508
+ },
509
+ "node_modules/flatbuffers": {
510
+ "version": "25.9.23",
511
+ "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-25.9.23.tgz",
512
+ "integrity": "sha512-MI1qs7Lo4Syw0EOzUl0xjs2lsoeqFku44KpngfIduHBYvzm8h2+7K8YMQh1JtVVVrUvhLpNwqVi4DERegUJhPQ==",
513
+ "license": "Apache-2.0",
514
+ "optional": true
515
+ },
516
+ "node_modules/guid-typescript": {
517
+ "version": "1.0.9",
518
+ "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz",
519
+ "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==",
520
+ "license": "ISC",
521
+ "optional": true
522
+ },
523
+ "node_modules/iobuffer": {
524
+ "version": "6.0.1",
525
+ "resolved": "https://registry.npmjs.org/iobuffer/-/iobuffer-6.0.1.tgz",
526
+ "integrity": "sha512-SZWYkWNfjIXIBYSDpXDYIgshqtbOPsi4lviawAEceR1Kqk+sHDlcQjWrzNQsii80AyBY0q5c8HCTNjqo74ul+Q==",
527
+ "license": "MIT",
528
+ "optional": true
529
+ },
530
+ "node_modules/jpeg-js": {
531
+ "version": "0.4.4",
532
+ "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz",
533
+ "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==",
534
+ "license": "BSD-3-Clause",
535
+ "optional": true
536
+ },
537
+ "node_modules/libopus-wasm": {
538
+ "version": "0.4.1",
539
+ "resolved": "https://registry.npmjs.org/libopus-wasm/-/libopus-wasm-0.4.1.tgz",
540
+ "integrity": "sha512-dt2u6KyBe1IONzZA2Q9TXQbmLsZ6l1vLqgt4n9XC/sE70BegLgwC/hcbZp41aJgURAqalYdnPg0wGSI2IwHyvA==",
541
+ "license": "MIT",
542
+ "optional": true,
543
+ "engines": {
544
+ "node": ">=22"
545
+ }
546
+ },
547
+ "node_modules/long": {
548
+ "version": "5.3.2",
549
+ "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz",
550
+ "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==",
551
+ "license": "Apache-2.0",
552
+ "optional": true
553
+ },
554
+ "node_modules/onnxruntime-common": {
555
+ "version": "1.30.0",
556
+ "resolved": "https://registry.npmjs.org/onnxruntime-common/-/onnxruntime-common-1.30.0.tgz",
557
+ "integrity": "sha512-7fdVWjAID1dVhH/G8qK3APARunV4VkBFoCQAP7qp4Wkab0mrorvmc+sqiT+mKXOzDqdjN5j+/Z9nb4gzNPWcyA==",
558
+ "license": "MIT",
559
+ "optional": true
560
+ },
561
+ "node_modules/onnxruntime-web": {
562
+ "version": "1.30.0",
563
+ "resolved": "https://registry.npmjs.org/onnxruntime-web/-/onnxruntime-web-1.30.0.tgz",
564
+ "integrity": "sha512-q0y+JrrtukXSzsBWEMccVfqX25LRmosXHF+CaRJmg8pZClzcV7svNc4rKY3jL02Vb7QmRMDs1SigqR4CXAfKYQ==",
565
+ "license": "MIT",
566
+ "optional": true,
567
+ "dependencies": {
568
+ "flatbuffers": "^25.1.24",
569
+ "guid-typescript": "^1.0.9",
570
+ "long": "^5.2.3",
571
+ "onnxruntime-common": "1.30.0",
572
+ "platform": "^1.3.6",
573
+ "protobufjs": "^7.2.4"
574
+ }
575
+ },
576
+ "node_modules/platform": {
577
+ "version": "1.3.6",
578
+ "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz",
579
+ "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==",
580
+ "license": "MIT",
581
+ "optional": true
582
+ },
583
+ "node_modules/protobufjs": {
584
+ "version": "7.6.6",
585
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.6.tgz",
586
+ "integrity": "sha512-dYDWdjSl5RNb7SgPxGQcRU+GtvP7s2fpkrY0r432PcOIaZ0/rBcxEZnQN67iJhFuQiVw754JDoPruPCNdGsbjg==",
587
+ "hasInstallScript": true,
588
+ "license": "BSD-3-Clause",
589
+ "optional": true,
590
+ "dependencies": {
591
+ "@protobufjs/aspromise": "^1.1.2",
592
+ "@protobufjs/base64": "^1.1.2",
593
+ "@protobufjs/codegen": "^2.0.5",
594
+ "@protobufjs/eventemitter": "^1.1.1",
595
+ "@protobufjs/fetch": "^1.1.1",
596
+ "@protobufjs/float": "^1.0.2",
597
+ "@protobufjs/path": "^1.1.2",
598
+ "@protobufjs/pool": "^1.1.0",
599
+ "@protobufjs/utf8": "^1.1.1",
600
+ "@types/node": ">=13.7.0",
601
+ "long": "^5.3.2"
602
+ },
603
+ "engines": {
604
+ "node": ">=12.0.0"
605
+ }
606
+ },
607
+ "node_modules/undici-types": {
608
+ "version": "8.9.0",
609
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz",
610
+ "integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==",
611
+ "license": "MIT",
612
+ "optional": true
613
+ },
614
+ "node_modules/wasm-feature-detect": {
615
+ "version": "1.9.0",
616
+ "resolved": "https://registry.npmjs.org/wasm-feature-detect/-/wasm-feature-detect-1.9.0.tgz",
617
+ "integrity": "sha512-zonE+xlIIYtxPy++L24ow0hAD8CICb4+FgPyROd3buyXIqsJvUEDkBgfCCoXOd1Hu3DUr0GOfnPIdcGV+YpNaA==",
618
+ "license": "Apache-2.0",
619
+ "optional": true
620
+ },
621
+ "node_modules/ws": {
622
+ "version": "8.22.0",
623
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.22.0.tgz",
624
+ "integrity": "sha512-Ydggc987+RO0AnWtZ/7Wq9FtNvcrL1b/RO0ud9mWjUPgDrsAAwQSF51sm2hm1XofbU/4jkpGEsLFsZZxU+1DOg==",
625
+ "license": "MIT",
626
+ "optional": true,
627
+ "engines": {
628
+ "node": ">=10.0.0"
629
+ },
630
+ "peerDependencies": {
631
+ "bufferutil": "^4.0.1",
632
+ "utf-8-validate": ">=5.0.2"
633
+ },
634
+ "peerDependenciesMeta": {
635
+ "bufferutil": {
636
+ "optional": true
637
+ },
638
+ "utf-8-validate": {
639
+ "optional": true
640
+ }
641
+ }
291
642
  }
292
643
  }
293
644
  }
@@ -3,6 +3,7 @@
3
3
  "private": true,
4
4
  "description": "Packages the BIOS installs from npm into OPFS, pinned by package-lock.json and pnpm-lock.yaml",
5
5
  "dependencies": {
6
+ "@ai-ecoverse/slicc-audio": "1.1.2",
6
7
  "@ai-ecoverse/slicc-browsers": "1.18.14",
7
8
  "@ai-ecoverse/slicc-capture": "1.4.1",
8
9
  "@ai-ecoverse/slicc-cdp": "1.41.20",
@@ -8,6 +8,9 @@ importers:
8
8
 
9
9
  .:
10
10
  dependencies:
11
+ '@ai-ecoverse/slicc-audio':
12
+ specifier: 1.1.2
13
+ version: 1.1.2
11
14
  '@ai-ecoverse/slicc-browsers':
12
15
  specifier: 1.18.14
13
16
  version: 1.18.14
@@ -101,6 +104,11 @@ importers:
101
104
 
102
105
  packages:
103
106
 
107
+ '@ai-ecoverse/slicc-audio@1.1.2':
108
+ resolution: {integrity: sha512-h2adfjjUQATjOki/+qsqdYjSRfNDhFIumMReOmtiA2fbCD+//XYqWsmMELdYE/jGMP97jFTFJ1fpvzsddRQ2Ag==}
109
+ engines: {node: '>=24', slicc-kernel: '>=1.153.0'}
110
+ hasBin: true
111
+
104
112
  '@ai-ecoverse/slicc-browsers@1.18.14':
105
113
  resolution: {integrity: sha512-BJAYu1tPJETsQFJEWdCyxWYU5oYaRwMdH1u4sJMvtBLVegkoRrEo5ruEAbIfzx63OJryzTylVYQ8FPVSVomxNA==}
106
114
  engines: {node: '>=24'}
@@ -124,6 +132,49 @@ packages:
124
132
  resolution: {integrity: sha512-IOIqooRxVT/IoPjQ5SLlKPfqRtyZuyoxjeVCXRiY0x4qPB1OwKZYeBMFpYh0om/5aUoizrHD2QZqLmppO/1yrw==}
125
133
  engines: {node: '>=26'}
126
134
 
135
+ '@ai-ecoverse/slicc-ortllama@1.28.0':
136
+ resolution: {integrity: sha512-OlnUW6tHnU/xgH4vfMbFCHHW2pc/go/Zvn3g0/r9+ManBicA/Z4+OehYEWpw79QDiy5D0ia6jPqVcjKVs04PDQ==}
137
+ engines: {node: '>=24'}
138
+ hasBin: true
139
+ peerDependencies:
140
+ '@ai-ecoverse/jev-omni.js': 0.2.0
141
+ '@ai-ecoverse/kev.js': 1.2.0
142
+ '@audio/decode-aac': 1.6.0
143
+ '@audio/encode-aac': 1.2.1
144
+ '@mediabunny/aac-encoder': 1.62.0
145
+ '@wllama/wllama': 3.8.1
146
+ espeak-ng: 1.0.2
147
+ mediabunny: 1.62.0
148
+ onnxruntime-node: 1.30.0
149
+ phonemize: 2.0.1
150
+ phonemizer: 1.2.1
151
+ webgpu: 0.6.2
152
+ peerDependenciesMeta:
153
+ '@ai-ecoverse/jev-omni.js':
154
+ optional: true
155
+ '@ai-ecoverse/kev.js':
156
+ optional: true
157
+ '@audio/decode-aac':
158
+ optional: true
159
+ '@audio/encode-aac':
160
+ optional: true
161
+ '@mediabunny/aac-encoder':
162
+ optional: true
163
+ '@wllama/wllama':
164
+ optional: true
165
+ espeak-ng:
166
+ optional: true
167
+ mediabunny:
168
+ optional: true
169
+ onnxruntime-node:
170
+ optional: true
171
+ phonemize:
172
+ optional: true
173
+ phonemizer:
174
+ optional: true
175
+ webgpu:
176
+ optional: true
177
+
127
178
  '@ai-ecoverse/slicc-spectrum@1.104.1':
128
179
  resolution: {integrity: sha512-/NNo3NmWc8l4+fcVKlynOKzRFbi2N/1H1w8Hkn4N8B51UgjvAW+Y3oykgp0kePQPb11zjithkKmZjC22CdXMkw==}
129
180
  engines: {node: '>=24'}
@@ -221,8 +272,123 @@ packages:
221
272
  '@ai-ecoverse/wasm-less': '*'
222
273
  '@ai-ecoverse/wasm-sed': '*'
223
274
 
275
+ '@huggingface/jinja@0.5.10':
276
+ resolution: {integrity: sha512-SgS1D1bglQ94ceD4ZCL6eayUDy9uV1xuyk61OjgSxU5GJh7upqZCKII0JoTYMc6wWsg3JUgaPRX0ElQzXPk3Cw==}
277
+ engines: {node: '>=18'}
278
+
279
+ '@huggingface/tokenizers@0.2.0':
280
+ resolution: {integrity: sha512-LidMHe1FpcSYH4vcSjXooda34pC0M8m1gmDOv7SQi6Iv+ib1zX7J3sHBCC9/3FPCkn2k1b55FneVqMRxrr99pg==}
281
+
282
+ '@jsquash/webp@1.5.0':
283
+ resolution: {integrity: sha512-KggLoj2MnRSfIqTeKe1EmbljTX2vuV7mh79k89PCL1pyqiDULcPM1L47twxXt0hkb68F70bXiL31MxsuoZtKFw==}
284
+
285
+ '@protobufjs/aspromise@1.1.2':
286
+ resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
287
+
288
+ '@protobufjs/base64@1.1.2':
289
+ resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==}
290
+
291
+ '@protobufjs/codegen@2.0.5':
292
+ resolution: {integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==}
293
+
294
+ '@protobufjs/eventemitter@1.1.1':
295
+ resolution: {integrity: sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==}
296
+
297
+ '@protobufjs/fetch@1.1.1':
298
+ resolution: {integrity: sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==}
299
+
300
+ '@protobufjs/float@1.0.2':
301
+ resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==}
302
+
303
+ '@protobufjs/path@1.1.2':
304
+ resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==}
305
+
306
+ '@protobufjs/pool@1.1.0':
307
+ resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==}
308
+
309
+ '@protobufjs/utf8@1.1.2':
310
+ resolution: {integrity: sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==}
311
+
312
+ '@types/node@26.6.5':
313
+ resolution: {integrity: sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg==}
314
+
315
+ fast-png@8.0.0:
316
+ resolution: {integrity: sha512-gCysNasJ8KEMgfdYIKd/wTDo6ENK1PWT0RJO7O+0pgmuHPw2O6tA1WvdxFRJoLf9V8yFYpG0FA1YgI8X97OhJA==}
317
+
318
+ fflate@0.8.3:
319
+ resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==}
320
+
321
+ flatbuffers@25.9.23:
322
+ resolution: {integrity: sha512-MI1qs7Lo4Syw0EOzUl0xjs2lsoeqFku44KpngfIduHBYvzm8h2+7K8YMQh1JtVVVrUvhLpNwqVi4DERegUJhPQ==}
323
+
324
+ guid-typescript@1.0.9:
325
+ resolution: {integrity: sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==}
326
+
327
+ iobuffer@6.0.1:
328
+ resolution: {integrity: sha512-SZWYkWNfjIXIBYSDpXDYIgshqtbOPsi4lviawAEceR1Kqk+sHDlcQjWrzNQsii80AyBY0q5c8HCTNjqo74ul+Q==}
329
+
330
+ jpeg-js@0.4.4:
331
+ resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==}
332
+
333
+ libopus-wasm@0.4.1:
334
+ resolution: {integrity: sha512-dt2u6KyBe1IONzZA2Q9TXQbmLsZ6l1vLqgt4n9XC/sE70BegLgwC/hcbZp41aJgURAqalYdnPg0wGSI2IwHyvA==}
335
+ engines: {node: '>=22'}
336
+
337
+ long@5.3.2:
338
+ resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==}
339
+
340
+ onnxruntime-common@1.30.0:
341
+ resolution: {integrity: sha512-7fdVWjAID1dVhH/G8qK3APARunV4VkBFoCQAP7qp4Wkab0mrorvmc+sqiT+mKXOzDqdjN5j+/Z9nb4gzNPWcyA==}
342
+
343
+ onnxruntime-web@1.30.0:
344
+ resolution: {integrity: sha512-q0y+JrrtukXSzsBWEMccVfqX25LRmosXHF+CaRJmg8pZClzcV7svNc4rKY3jL02Vb7QmRMDs1SigqR4CXAfKYQ==}
345
+
346
+ platform@1.3.6:
347
+ resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==}
348
+
349
+ protobufjs@7.6.6:
350
+ resolution: {integrity: sha512-dYDWdjSl5RNb7SgPxGQcRU+GtvP7s2fpkrY0r432PcOIaZ0/rBcxEZnQN67iJhFuQiVw754JDoPruPCNdGsbjg==}
351
+ engines: {node: '>=12.0.0'}
352
+
353
+ undici-types@8.9.0:
354
+ resolution: {integrity: sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==}
355
+
356
+ wasm-feature-detect@1.9.0:
357
+ resolution: {integrity: sha512-zonE+xlIIYtxPy++L24ow0hAD8CICb4+FgPyROd3buyXIqsJvUEDkBgfCCoXOd1Hu3DUr0GOfnPIdcGV+YpNaA==}
358
+
359
+ ws@8.22.0:
360
+ resolution: {integrity: sha512-Ydggc987+RO0AnWtZ/7Wq9FtNvcrL1b/RO0ud9mWjUPgDrsAAwQSF51sm2hm1XofbU/4jkpGEsLFsZZxU+1DOg==}
361
+ engines: {node: '>=10.0.0'}
362
+ peerDependencies:
363
+ bufferutil: ^4.0.1
364
+ utf-8-validate: '>=5.0.2'
365
+ peerDependenciesMeta:
366
+ bufferutil:
367
+ optional: true
368
+ utf-8-validate:
369
+ optional: true
370
+
224
371
  snapshots:
225
372
 
373
+ '@ai-ecoverse/slicc-audio@1.1.2':
374
+ optionalDependencies:
375
+ '@ai-ecoverse/slicc-ortllama': 1.28.0
376
+ transitivePeerDependencies:
377
+ - '@ai-ecoverse/jev-omni.js'
378
+ - '@ai-ecoverse/kev.js'
379
+ - '@audio/decode-aac'
380
+ - '@audio/encode-aac'
381
+ - '@mediabunny/aac-encoder'
382
+ - '@wllama/wllama'
383
+ - bufferutil
384
+ - espeak-ng
385
+ - mediabunny
386
+ - onnxruntime-node
387
+ - phonemize
388
+ - phonemizer
389
+ - utf-8-validate
390
+ - webgpu
391
+
226
392
  '@ai-ecoverse/slicc-browsers@1.18.14': {}
227
393
 
228
394
  '@ai-ecoverse/slicc-capture@1.4.1': {}
@@ -233,6 +399,22 @@ snapshots:
233
399
 
234
400
  '@ai-ecoverse/slicc-kernel@1.167.4': {}
235
401
 
402
+ '@ai-ecoverse/slicc-ortllama@1.28.0':
403
+ dependencies:
404
+ '@huggingface/jinja': 0.5.10
405
+ '@huggingface/tokenizers': 0.2.0
406
+ '@jsquash/webp': 1.5.0
407
+ fast-png: 8.0.0
408
+ fflate: 0.8.3
409
+ jpeg-js: 0.4.4
410
+ libopus-wasm: 0.4.1
411
+ onnxruntime-web: 1.30.0
412
+ ws: 8.22.0
413
+ transitivePeerDependencies:
414
+ - bufferutil
415
+ - utf-8-validate
416
+ optional: true
417
+
236
418
  '@ai-ecoverse/slicc-spectrum@1.104.1': {}
237
419
 
238
420
  '@ai-ecoverse/wasi-fnox@1.40.0-1': {}
@@ -289,3 +471,115 @@ snapshots:
289
471
  '@ai-ecoverse/wasm-grep': 3.12.0-8
290
472
  '@ai-ecoverse/wasm-less': 668.0.0-7
291
473
  '@ai-ecoverse/wasm-sed': 4.10.0-6
474
+
475
+ '@huggingface/jinja@0.5.10':
476
+ optional: true
477
+
478
+ '@huggingface/tokenizers@0.2.0':
479
+ optional: true
480
+
481
+ '@jsquash/webp@1.5.0':
482
+ dependencies:
483
+ wasm-feature-detect: 1.9.0
484
+ optional: true
485
+
486
+ '@protobufjs/aspromise@1.1.2':
487
+ optional: true
488
+
489
+ '@protobufjs/base64@1.1.2':
490
+ optional: true
491
+
492
+ '@protobufjs/codegen@2.0.5':
493
+ optional: true
494
+
495
+ '@protobufjs/eventemitter@1.1.1':
496
+ optional: true
497
+
498
+ '@protobufjs/fetch@1.1.1':
499
+ dependencies:
500
+ '@protobufjs/aspromise': 1.1.2
501
+ optional: true
502
+
503
+ '@protobufjs/float@1.0.2':
504
+ optional: true
505
+
506
+ '@protobufjs/path@1.1.2':
507
+ optional: true
508
+
509
+ '@protobufjs/pool@1.1.0':
510
+ optional: true
511
+
512
+ '@protobufjs/utf8@1.1.2':
513
+ optional: true
514
+
515
+ '@types/node@26.6.5':
516
+ dependencies:
517
+ undici-types: 8.9.0
518
+ optional: true
519
+
520
+ fast-png@8.0.0:
521
+ dependencies:
522
+ fflate: 0.8.3
523
+ iobuffer: 6.0.1
524
+ optional: true
525
+
526
+ fflate@0.8.3:
527
+ optional: true
528
+
529
+ flatbuffers@25.9.23:
530
+ optional: true
531
+
532
+ guid-typescript@1.0.9:
533
+ optional: true
534
+
535
+ iobuffer@6.0.1:
536
+ optional: true
537
+
538
+ jpeg-js@0.4.4:
539
+ optional: true
540
+
541
+ libopus-wasm@0.4.1:
542
+ optional: true
543
+
544
+ long@5.3.2:
545
+ optional: true
546
+
547
+ onnxruntime-common@1.30.0:
548
+ optional: true
549
+
550
+ onnxruntime-web@1.30.0:
551
+ dependencies:
552
+ flatbuffers: 25.9.23
553
+ guid-typescript: 1.0.9
554
+ long: 5.3.2
555
+ onnxruntime-common: 1.30.0
556
+ platform: 1.3.6
557
+ protobufjs: 7.6.6
558
+ optional: true
559
+
560
+ platform@1.3.6:
561
+ optional: true
562
+
563
+ protobufjs@7.6.6:
564
+ dependencies:
565
+ '@protobufjs/aspromise': 1.1.2
566
+ '@protobufjs/base64': 1.1.2
567
+ '@protobufjs/codegen': 2.0.5
568
+ '@protobufjs/eventemitter': 1.1.1
569
+ '@protobufjs/fetch': 1.1.1
570
+ '@protobufjs/float': 1.0.2
571
+ '@protobufjs/path': 1.1.2
572
+ '@protobufjs/pool': 1.1.0
573
+ '@protobufjs/utf8': 1.1.2
574
+ '@types/node': 26.6.5
575
+ long: 5.3.2
576
+ optional: true
577
+
578
+ undici-types@8.9.0:
579
+ optional: true
580
+
581
+ wasm-feature-detect@1.9.0:
582
+ optional: true
583
+
584
+ ws@8.22.0:
585
+ optional: true