@ai-ecoverse/slicc-bios 1.51.1 → 1.51.3
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
|
@@ -32,7 +32,7 @@ The other 20 tools are listed in [`src/packages/tools.json`](src/packages/tools.
|
|
|
32
32
|
- npm's `latest`, through the same listing rules as an optional package: provenance, exceptions, engines, and a walk-back of at most five versions;
|
|
33
33
|
- never older than the installed one;
|
|
34
34
|
- one that doesn't pass, or doesn't come back from pnpm, leaves the version it had. Its row reads *Not offered: …*.
|
|
35
|
-
- **While the first round runs:** a command of a tool that isn't there yet (`jq`, `curl`, `rg`, …) answers `jq: seven is still installing it; Install / Update shows its progress` and exits 127, in the terminal, for the agent and under sudo. Before the first round installs anything, seven writes one placeholder package, `slicc-pending-tools`, into `/opt/slicc/pending` (protected like the rest of `/opt/slicc`), with a `#!/bin/sh` script for each command those tools' npm docs list. The kernel scans that root last, after `/opt/slicc/tools` and `/opt/user`, so anything real wins as soon as it's installed. When the round ends, seven removes the whole root, whatever installed, so `command -v jq` and bash's own `command not found` tell the truth again. Later rounds put no placeholders.
|
|
35
|
+
- **While the first round runs:** a command of a tool that isn't there yet (`jq`, `curl`, `rg`, …) answers `jq: seven is still installing it; Install / Update shows its progress` and exits 127, in the terminal, for the agent and under sudo. Before the first round installs anything, seven writes one placeholder package, `slicc-pending-tools`, into `/opt/slicc/pending` (protected like the rest of `/opt/slicc`), with a `#!/bin/sh` script for each command those tools' npm docs list. The kernel scans that root last, after `/opt/slicc/tools` and `/opt/user`, so anything real wins as soon as it's installed. The round installs the essentials first, then the rest. When the essentials' batch ends, seven drops their placeholders and keeps only those of the tools still to come, so a first-batch tool that failed or was refused is plainly not found while the rest install, as its row says. When the round ends, seven removes the whole root, whatever installed, so `command -v jq` and bash's own `command not found` tell the truth again. Later rounds put no placeholders.
|
|
36
36
|
- **Offline:** what's installed stays. Nothing is fetched until npm answers again.
|
|
37
37
|
- **Moving an old profile over:** an existing profile has the tools in `/node_modules`. The installer keeps each one there until `/opt/slicc/tools` has it. When the installer can't read `tools.json` (a network error, a 5xx or broken JSON), it prunes nothing that run, since it can't tell a tool waiting to move from a dropped package; a deployment without `tools.json` (404) prunes as before. Then seven removes the old copy through the kernel, and its receipt and ledger entry through the installer (`retire`). A tool therefore never disappears, offline or not.
|
|
38
38
|
- **Install / Update:** each tool has a row (`tools:<id>`, `preinstalled: true`), with the version it has, what npm offers, and why a newer one isn't offered. Retry or Update checks again. There's no Remove.
|
|
@@ -603,7 +603,7 @@ A running install updates itself from the deployment it was booted from, package
|
|
|
603
603
|
|
|
604
604
|
1. **Notice.** `os/update.js` fetches `packages/pnpm-lock.yaml` from the deployment when the UI starts, whenever the tab becomes visible again, and every 15 minutes. If it differs from `var/lib/slicc/pnpm-lock.yaml` in OPFS, there is an update.
|
|
605
605
|
2. **Install.** It writes the deployment's `package.json` and `pnpm-lock.yaml` to the OPFS root and runs `pnpm install --frozen-lockfile --trust-lockfile` there in the page's kernel. [`@ai-ecoverse/wasi-pnpm`](https://www.npmjs.com/package/@ai-ecoverse/wasi-pnpm) is one of the bootstrap packages, so pnpm is always installed. pnpm's hoisted, copying layout keeps `node_modules/` exactly where the BIOS puts it, and it only rewrites packages whose locked version changed. Its store lives in OPFS under `/home/.local/share/pnpm/`. Only when pnpm succeeds does the updater write the lockfile to `var/lib/slicc/pnpm-lock.yaml`, so an update that fails or is cut short by closing the tab is tried again by the next check.
|
|
606
|
-
3. **Switch over.** Packages are updated in place. A program reads its wasm and glue when it starts, so running processes, the interactive `bash` included, keep the code they started with, and every process started afterwards gets the new version. The page itself keeps the kernel and terminals it loaded. The changed rows of [Install / Update](#install--update) say *Ready to apply*, list what changed and offer **Reload**, which navigates to the BIOS with a view transition. The BIOS then picks up a new `sw.js` and seed, finds every package current (its receipt, or pnpm's `.modules.yaml` and the installed version, match), and goes back to `os/`. Files in OPFS, `/home` included, are not touched.
|
|
606
|
+
3. **Switch over.** Packages are updated in place. pnpm swaps a changed package in with two renames (the old directory aside, the staged one onto its name). From slicc-kernel 1.168.1 on, the kernel holds the package's `slicc-kernel-replacing` lock from the first rename until the second, the lock the installer takes too (boot step 3, at the top), so an exec that starts meanwhile waits and then runs the new version whole ([#663](https://github.com/ai-ecoverse/slicc-bios/issues/663)). A program reads its wasm and glue when it starts, so running processes, the interactive `bash` included, keep the code they started with, and every process started afterwards gets the new version. The page itself keeps the kernel and terminals it loaded. The changed rows of [Install / Update](#install--update) say *Ready to apply*, list what changed and offer **Reload**, which navigates to the BIOS with a view transition. The BIOS then picks up a new `sw.js` and seed, finds every package current (its receipt, or pnpm's `.modules.yaml` and the installed version, match), and goes back to `os/`. Files in OPFS, `/home` included, are not touched.
|
|
607
607
|
|
|
608
608
|
Both the BIOS installer and the updater take the Web Lock `slicc-packages`, so tabs never install at the same time.
|
|
609
609
|
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"private": true,
|
|
4
4
|
"description": "SLICC's agent, which the UI installs with pnpm in the background into /opt/agent in OPFS",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@ai-ecoverse/slicc-agent": "7.8.
|
|
6
|
+
"@ai-ecoverse/slicc-agent": "7.8.9",
|
|
7
7
|
"@ai-ecoverse/slicc-kernel": "1.168.1"
|
|
8
8
|
}
|
|
9
9
|
}
|
|
@@ -14,8 +14,8 @@ importers:
|
|
|
14
14
|
.:
|
|
15
15
|
dependencies:
|
|
16
16
|
'@ai-ecoverse/slicc-agent':
|
|
17
|
-
specifier: 7.8.
|
|
18
|
-
version: 7.8.
|
|
17
|
+
specifier: 7.8.9
|
|
18
|
+
version: 7.8.9(@ai-ecoverse/slicc-kernel@1.168.1)(@aws-sdk/credential-provider-node@3.972.84)(@smithy/signature-v4@5.7.4)(ws@8.22.0)
|
|
19
19
|
'@ai-ecoverse/slicc-kernel':
|
|
20
20
|
specifier: 1.168.1
|
|
21
21
|
version: 1.168.1
|
|
@@ -25,8 +25,8 @@ packages:
|
|
|
25
25
|
'@ai-ecoverse/jerk-oauth@1.3.0':
|
|
26
26
|
resolution: {integrity: sha512-dbCU1KgYns8lP8IUCWbvCxQxCFSiVxuEYViu4CcnxphcrL9gltTvPdBpQOfAduU80GQTU3H4CMjGwuCo6EGNhg==}
|
|
27
27
|
|
|
28
|
-
'@ai-ecoverse/slicc-agent@7.8.
|
|
29
|
-
resolution: {integrity: sha512
|
|
28
|
+
'@ai-ecoverse/slicc-agent@7.8.9':
|
|
29
|
+
resolution: {integrity: sha512-+2inbqY/nsJDo38+qrzbMAOZLKu3EIsK8VJ4jnEI2YvfEmjzPOPV9AdD2tTXUx8q/3/oHugvAGpfMXVzRUIWxg==}
|
|
30
30
|
engines: {node: '>=24'}
|
|
31
31
|
peerDependencies:
|
|
32
32
|
'@ai-ecoverse/slicc-kernel': '>=1.110.0 <2'
|
|
@@ -35,8 +35,8 @@ packages:
|
|
|
35
35
|
'@ai-ecoverse/slicc-spectrum':
|
|
36
36
|
optional: true
|
|
37
37
|
|
|
38
|
-
'@ai-ecoverse/slicc-browsers@1.18.
|
|
39
|
-
resolution: {integrity: sha512-
|
|
38
|
+
'@ai-ecoverse/slicc-browsers@1.18.16':
|
|
39
|
+
resolution: {integrity: sha512-hTXaDzfcpFk/YCs09t6ciWSX3L6w99pcux/EXZsICHtSWxfFp1xk4sWNpFb4rCUgC2CY7ZxVa2bDkfYqAYEcnA==}
|
|
40
40
|
engines: {node: '>=24'}
|
|
41
41
|
|
|
42
42
|
'@ai-ecoverse/slicc-kernel@1.168.1':
|
|
@@ -355,9 +355,9 @@ snapshots:
|
|
|
355
355
|
|
|
356
356
|
'@ai-ecoverse/jerk-oauth@1.3.0': {}
|
|
357
357
|
|
|
358
|
-
'@ai-ecoverse/slicc-agent@7.8.
|
|
358
|
+
'@ai-ecoverse/slicc-agent@7.8.9(@ai-ecoverse/slicc-kernel@1.168.1)(@aws-sdk/credential-provider-node@3.972.84)(@smithy/signature-v4@5.7.4)(ws@8.22.0)':
|
|
359
359
|
dependencies:
|
|
360
|
-
'@ai-ecoverse/slicc-browsers': 1.18.
|
|
360
|
+
'@ai-ecoverse/slicc-browsers': 1.18.16
|
|
361
361
|
'@ai-ecoverse/slicc-kernel': 1.168.1
|
|
362
362
|
'@ai-ecoverse/slicc-vault': 1.17.0
|
|
363
363
|
'@aws-sdk/middleware-websocket': 3.972.54
|
|
@@ -380,7 +380,7 @@ snapshots:
|
|
|
380
380
|
- ws
|
|
381
381
|
- zod
|
|
382
382
|
|
|
383
|
-
'@ai-ecoverse/slicc-browsers@1.18.
|
|
383
|
+
'@ai-ecoverse/slicc-browsers@1.18.16': {}
|
|
384
384
|
|
|
385
385
|
'@ai-ecoverse/slicc-kernel@1.168.1': {}
|
|
386
386
|
|