@ai-ecoverse/slicc-bios 1.55.14 → 1.55.16
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
|
@@ -142,8 +142,8 @@ The kernel runs with users on (slicc-kernel ≥ 1.81.0): files have owners and m
|
|
|
142
142
|
- **Under `'report'`** nothing is protected, since protection has no report mode of its own. Installs already run as tagged writers from `/opt/slicc/base` with the clean config, and bios watches the six trees through the kernel (`fs.watch`, recursive). Each change made through the page's kernel outside bios's own installs goes to `denials.log` as `op: 'protect'`, `errno: 'EROFS'`: a write that `'enforce'` would refuse. The watch doesn't say which process wrote, so these lines have no user and no tag. Changes made outside the page's kernel (bios's install kernels, the page itself) aren't seen.
|
|
143
143
|
- **Global packages** (`pnpm add -g` into `/usr/local/share/pnpm`) aren't protected and run untagged.
|
|
144
144
|
- **A remembered mount** (`slicc-os.mounts`) at, under or above a protected path is dropped at boot under `'enforce'`, with a notice, *A remembered folder wasn’t mounted*.
|
|
145
|
-
- **Sudo approvals through the agent** (slicc-agent ≥
|
|
146
|
-
- **Sudo approvals in bios's dialog:** the kernel's `approve` hook feeds `model.approvals`, spectrum's sudo dialog. It shows the resolved path and arguments, shell-quoted, the directory, the requester mapped from the tag
|
|
145
|
+
- **Sudo approvals through the agent** (slicc-agent ≥ 7.17.0, slicc-kernel ≥ 1.174.0, spectrum ≥ 1.112.0): bios only routes. While the agent runs, the kernel's `approve` hook hands each request to the agent's `owner.approve(req, { signal, where })` unchanged, the kernel's facts included: `always` (`false` when the line can't be recorded as a rule), `stdin` (`tty`, `none`, `pipe` or `file`) and `rootOnly` (for the directory and each path on the line, whether only root can change it). bios returns the agent's answer as it is. It becomes a `sudo` item in the agent's approvals, which every owner device answers with the same powers: this tab, other tabs, and linked followers with or without Control. The judge is slicc-agent's: it gives each request a level and a reason, and offers *Always allow* only to a person, at level 1, when its model says a later run of the same line can do no more. Enforcement and rule recording are the kernel's: it writes an *Always* as the exact line with `Stdin none`, and runs an *Always* for a line it can't record once. bios checks no command text. A request from a follower's shell names that device (`where`, "on <device>"), and each linked device's agent port is opened with `owner.port({ device })`, so the item records which device answered. The tab hands its own approvals port to `createAgentModel(connection, { approvals })`, so `model.approvals` lists both sets. When the agent can't take a request (it rejects with `EAGAIN`: released, restarting or an older worker), isn't running, or was started from a release older than 7.17.0 (one without the judge, which can still run until it restarts after an update), bios's own dialog below asks instead.
|
|
146
|
+
- **Sudo approvals in bios's dialog:** without the agent there is no judge, so the kernel's `approve` hook feeds `model.approvals`, spectrum's sudo dialog, with *Allow once* and *Deny* only and no verdict. It shows the resolved path and arguments, shell-quoted, the directory, the requester mapped from the tag and the target. Every tab shows the request (`BroadcastChannel('slicc-approvals')`), and the first decision wins; the other tabs see *Answered in another tab*. The item has `always: false`, and an `always` decision for it, from any tab, is refused with *Always isn't offered for this request.* and the request stays open, so no `NOPASSWD` line is written from bios's dialog.
|
|
147
147
|
- **Denials:** denials under `'report'` and `'enforce'` go to `/var/log/slicc/denials.log`, one JSON line per distinct `(uid, tag, op, path, errno)` with its `count`, `first` and last `time`, plus `user`, `tag` (the process's tag, `null` for an untagged one) and `mode`. They're written within a quarter of a second, at every 100 distinct denials, and when the page is hidden (`visibilitychange`). When the page goes away (`pagehide`), the ones not yet written are kept in `localStorage` (`slicc.denials.spool.*`), and the next page writes them once its kernel is up. The log rotates to `denials.log.1` at 1 MiB. `slicc-denials` (in `/usr/local/bin`) sums up the log and its `.1`: the total and time span, then counts by tag kind (`agent`, `user`, `untagged`), op, errno and path prefix; `--json` prints the same as one object.
|
|
148
148
|
- **Schedules** (slicc-agent ≥ 5.9.0, slicc-kernel ≥ 1.110.0): each user's kernel crontab (`/var/spool/cron/crontabs/<user>`, `crontab -l`) holds them, and the kernel runs a due job as its user. A job that runs `agent send <target> '<message>'` comes back as a cron lick. The agent moves an older agent's `~/.slicc/crontab` lines into the file owner's crontab (as `# name: <name>` and `<schedule> agent send …`) and keeps the file as `~/.slicc/crontab.migrated`.
|
|
149
149
|
- **Not a boundary:** the kernel's loopback (`<port>.kernel.localhost`) isn't one between users (N2). A server any user starts is reachable by every process and by seven's pages.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-ecoverse/slicc-bios",
|
|
3
|
-
"version": "1.55.
|
|
3
|
+
"version": "1.55.16",
|
|
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",
|
|
@@ -49,14 +49,14 @@
|
|
|
49
49
|
"format": "biome check --write ."
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@ai-ecoverse/slicc": "1.61.
|
|
53
|
-
"@ai-ecoverse/slicc-browsers": "1.
|
|
54
|
-
"@ai-ecoverse/slicc-cdp": "1.
|
|
52
|
+
"@ai-ecoverse/slicc": "1.61.10",
|
|
53
|
+
"@ai-ecoverse/slicc-browsers": "1.20.0",
|
|
54
|
+
"@ai-ecoverse/slicc-cdp": "1.46.0",
|
|
55
55
|
"@ai-ecoverse/slicc-kernel": "1.174.0",
|
|
56
56
|
"@ai-ecoverse/slicc-shared-web": "2.13.10",
|
|
57
57
|
"@ai-ecoverse/slicc-spectrum": "1.112.0",
|
|
58
58
|
"@ai-ecoverse/slicc-vault": "1.22.0",
|
|
59
|
-
"@biomejs/biome": "2.6.
|
|
59
|
+
"@biomejs/biome": "2.6.4",
|
|
60
60
|
"aws4fetch": "1.0.20",
|
|
61
61
|
"es-module-lexer": "3.0.4",
|
|
62
62
|
"fake-indexeddb": "6.2.6",
|
|
@@ -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.
|
|
6
|
+
"@ai-ecoverse/slicc-agent": "7.18.0",
|
|
7
7
|
"@ai-ecoverse/slicc-kernel": "1.174.0"
|
|
8
8
|
}
|
|
9
9
|
}
|
|
@@ -14,8 +14,8 @@ importers:
|
|
|
14
14
|
.:
|
|
15
15
|
dependencies:
|
|
16
16
|
'@ai-ecoverse/slicc-agent':
|
|
17
|
-
specifier: 7.
|
|
18
|
-
version: 7.
|
|
17
|
+
specifier: 7.18.0
|
|
18
|
+
version: 7.18.0(@ai-ecoverse/slicc-kernel@1.174.0)(@aws-sdk/credential-provider-node@3.972.84)(@smithy/signature-v4@5.7.4)
|
|
19
19
|
'@ai-ecoverse/slicc-kernel':
|
|
20
20
|
specifier: 1.174.0
|
|
21
21
|
version: 1.174.0
|
|
@@ -25,8 +25,8 @@ packages:
|
|
|
25
25
|
'@ai-ecoverse/jerk-oauth@1.4.0':
|
|
26
26
|
resolution: {integrity: sha512-fwDK5WV+6TW6u9Y6KE0PwtSYiAxvfGHLwqQzEKsSyRUVKcYMYuGNQ9d9mvX+B15Wry4sUx96u/56VTQhQVXJYg==}
|
|
27
27
|
|
|
28
|
-
'@ai-ecoverse/slicc-agent@7.
|
|
29
|
-
resolution: {integrity: sha512-
|
|
28
|
+
'@ai-ecoverse/slicc-agent@7.18.0':
|
|
29
|
+
resolution: {integrity: sha512-1ZiBtprgENZRuLJsW8ygTxuuHqH0dqrC6/2n3YwI8r5moRhSw2j7b5/ZVpxUmI5JDC784t6t23eIVg4B8G/jqw==}
|
|
30
30
|
engines: {node: '>=24'}
|
|
31
31
|
peerDependencies:
|
|
32
32
|
'@ai-ecoverse/slicc-kernel': '>=1.172.2 <2'
|
|
@@ -351,7 +351,7 @@ snapshots:
|
|
|
351
351
|
|
|
352
352
|
'@ai-ecoverse/jerk-oauth@1.4.0': {}
|
|
353
353
|
|
|
354
|
-
'@ai-ecoverse/slicc-agent@7.
|
|
354
|
+
'@ai-ecoverse/slicc-agent@7.18.0(@ai-ecoverse/slicc-kernel@1.174.0)(@aws-sdk/credential-provider-node@3.972.84)(@smithy/signature-v4@5.7.4)':
|
|
355
355
|
dependencies:
|
|
356
356
|
'@ai-ecoverse/slicc-kernel': 1.174.0
|
|
357
357
|
'@ai-ecoverse/slicc-vault': 1.22.0
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"name": "slicc-bios-packages",
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"@ai-ecoverse/slicc-audio": "1.1.6",
|
|
10
|
-
"@ai-ecoverse/slicc-browsers": "1.
|
|
10
|
+
"@ai-ecoverse/slicc-browsers": "1.20.0",
|
|
11
11
|
"@ai-ecoverse/slicc-capture": "1.4.1",
|
|
12
12
|
"@ai-ecoverse/slicc-kernel": "1.174.0",
|
|
13
13
|
"@ai-ecoverse/slicc-spectrum": "1.112.0",
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
}
|
|
40
40
|
},
|
|
41
41
|
"node_modules/@ai-ecoverse/slicc-browsers": {
|
|
42
|
-
"version": "1.
|
|
43
|
-
"resolved": "https://registry.npmjs.org/@ai-ecoverse/slicc-browsers/-/slicc-browsers-1.
|
|
44
|
-
"integrity": "sha512-
|
|
42
|
+
"version": "1.20.0",
|
|
43
|
+
"resolved": "https://registry.npmjs.org/@ai-ecoverse/slicc-browsers/-/slicc-browsers-1.20.0.tgz",
|
|
44
|
+
"integrity": "sha512-UZ3dM9hbz9rjr1b3cJ9nCp+K7ueLr869pZLlPjI6VpesutOZN4vn/luibOGyZdqhszL0rDKlnm0zB8udshXRMA==",
|
|
45
45
|
"license": "Apache-2.0",
|
|
46
46
|
"engines": {
|
|
47
47
|
"node": ">=24"
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"description": "Packages the BIOS installs from npm into OPFS, pinned by package-lock.json and pnpm-lock.yaml",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@ai-ecoverse/slicc-audio": "1.1.6",
|
|
7
|
-
"@ai-ecoverse/slicc-browsers": "1.
|
|
7
|
+
"@ai-ecoverse/slicc-browsers": "1.20.0",
|
|
8
8
|
"@ai-ecoverse/slicc-capture": "1.4.1",
|
|
9
9
|
"@ai-ecoverse/slicc-kernel": "1.174.0",
|
|
10
10
|
"@ai-ecoverse/slicc-spectrum": "1.112.0",
|
|
@@ -12,8 +12,8 @@ importers:
|
|
|
12
12
|
specifier: 1.1.6
|
|
13
13
|
version: 1.1.6
|
|
14
14
|
'@ai-ecoverse/slicc-browsers':
|
|
15
|
-
specifier: 1.
|
|
16
|
-
version: 1.
|
|
15
|
+
specifier: 1.20.0
|
|
16
|
+
version: 1.20.0
|
|
17
17
|
'@ai-ecoverse/slicc-capture':
|
|
18
18
|
specifier: 1.4.1
|
|
19
19
|
version: 1.4.1
|
|
@@ -49,8 +49,8 @@ packages:
|
|
|
49
49
|
engines: {node: '>=24', slicc-kernel: '>=1.153.0'}
|
|
50
50
|
hasBin: true
|
|
51
51
|
|
|
52
|
-
'@ai-ecoverse/slicc-browsers@1.
|
|
53
|
-
resolution: {integrity: sha512-
|
|
52
|
+
'@ai-ecoverse/slicc-browsers@1.20.0':
|
|
53
|
+
resolution: {integrity: sha512-UZ3dM9hbz9rjr1b3cJ9nCp+K7ueLr869pZLlPjI6VpesutOZN4vn/luibOGyZdqhszL0rDKlnm0zB8udshXRMA==}
|
|
54
54
|
engines: {node: '>=24'}
|
|
55
55
|
|
|
56
56
|
'@ai-ecoverse/slicc-capture@1.4.1':
|
|
@@ -248,7 +248,7 @@ snapshots:
|
|
|
248
248
|
- utf-8-validate
|
|
249
249
|
- webgpu
|
|
250
250
|
|
|
251
|
-
'@ai-ecoverse/slicc-browsers@1.
|
|
251
|
+
'@ai-ecoverse/slicc-browsers@1.20.0': {}
|
|
252
252
|
|
|
253
253
|
'@ai-ecoverse/slicc-capture@1.4.1': {}
|
|
254
254
|
|