@ai-ecoverse/slicc-bios 1.51.33 → 1.51.34

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
@@ -352,9 +352,9 @@ Seven keeps its secrets in the vault, a separate origin (`@ai-ecoverse/slicc-vau
352
352
  - **`button()`** is a plain iframe of `<vault origin>/button.html`, with no `sandbox`, so it can open the vault's popup. Every `button` message carries seven's current colour scheme as `theme`, and is sent again on the frame's `load` and whenever the scheme changes; spectrum (≥ 1.68.3) gives the iframe the same `color-scheme`, so Chrome doesn't paint it opaque.
353
353
  - **The agent's port:** for slicc-agent ≥ 4.0.0 only, each agent worker gets its own `agent`-role port, posted raw as `{ vault, scrub }` next to the agent's `{ kernel, admin }`, and again with a fresh port after the frame reloads. The agent port gets no events, so every lock change in the page port's `status` is posted to the worker as `{ locked: true | false }`. `scrub` is the last `{ needed, version, ready }` pair (`localStorage['slicc-os.vault-scrub']`, `null` before any vault connected); each new pair is posted to the worker as `{ scrub }` before seven relays the `put`, `seal` or `import` answer that caused it. Agents before 4.0.0 speak an earlier draft of that wire, so they get no port and stay inert.
354
354
  - **`/dev/sealed`:** the kernel's `sealed` hook relays each request with its kernel stamp (`caller`, unchanged) as the vault's `sealed` op, and returns its one reply. While kernel users aren't `enforce`, `materialize` and `materializeConsume` are refused with `EACCES`; under `enforce`, `materialize` is relayed like the rest, and the kernel's `materializeConsume` (`ticket`, `stamp`, `path`, `resolved`, `argv`, `cwd`, `interpreters`, `trusted`, unchanged) goes to the vault's page op of that name, whose `{ values, placeholders }` go back to the kernel only. jerk's requests (`src/seed/jerk.js`) are answered with `answer`: `jop: list` with rows from each linked device that runs jerk (J1 `list`), `jop: status` from the vault's records, where `mcp:<server>` also counts a `list.mcp` record of exactly that server (exit 3 without one; the vault, not bios, checks that the reader is root), `jop: create` through J1 `create` with its progress lines (exit 4 without a jerk device), `unseal` by removing the provider's `jerk:` records, and `oauth` and `jerk-seal` with exit 5 until seven signs in itself. A `cancelled` event stops a running J1 `create`.
355
- - **Forward (seam):** `forward` is passed through with the kernel's full stamp as `owner` (`users` included, since the vault injects only for `enforce`) and the response port transferred; the exit router's use of it is VAULT-1b's follow-up.
356
- - **fnox** (the optional catalog's `fnox`, wasi-fnox): every kernel process gets `FNOX_CONFIG_DIR=/etc/fnox`, sudo included, and bios writes `/etc/fnox/config.toml` once as root's `0644` (`default_provider = "seven"`, provider `seven` of type `sealed`), so cones read it and only `sudo` changes it. A boot skips that seed when `/etc/fnox` is already root's `0755` directory and `config.toml` a non-empty regular file, root's `0644`; any other owner, mode or type reruns it, which keeps the file's contents and repairs only its owner and mode. fnox keeps placeholders there and reaches the vault through `/dev/sealed`; while the vault frame never answered, every sealed operation fails at once with `ENOTCONN`. Use `fnox set` to change a secret (`fnox edit` is refused on WASI).
357
- - **Egress:** the vault's token refreshes arrive as `egress` events; seven sends them without following redirects (through its exits when the transport hands redirects back, else the page's own `fetch` with `redirect: 'manual'`), answers a redirect with an error, zeroes the request body once it's sent, and answers on the event's port within 30 s, never logging the request.
355
+ - **HTTP placeholders:** an attributed kernel request uses the vault's `forward` admission before its selected exit sends it. The carrier must support manual redirects and decoded responses; no unavailable, older or unproven carrier is used instead. Ordinary secret bodies are unchanged. A Settings MCP credential uses its server-bound path, with complete-body scrubbing before send and response scrubbing before return. Body-only placeholders are application data, not injected. An old extension remains unavailable for these requests until its verified store release supports the redirect contract. Link and Tailscale credentialed carriers remain unavailable in this release.
356
+ - **Policy:** with kernel users `enforce`, bios seeds missing policy files under trusted root-owned `/etc/fnox` and `/etc/slicc` directories, without overwriting existing contents or trusting writable, linked or mounted paths. The kernel attests the bytes on boot and change. A trusted missing-file attestation clears and pauses its policy; missing or untrusted ancestors hold protected operations until a trusted resync. Materialize, consume and session operations also require an unlocked, current-capability vault and an accepted trusted policy; an older vault stays refused until it updates. Processes keep `FNOX_CONFIG_DIR=/etc/fnox`; fnox uses placeholders and `/dev/sealed`. Named root MCP calls discover their Settings placeholder directly, without a jerk command.
357
+ - **Egress:** token refreshes use the same selected transport with a manual redirect policy, never a native-fetch fallback. An incapable route or redirect is refused; the response returns only to the vault. Request bodies are zeroed after use, and requests are not logged.
358
358
  - **Adobe IMS:** with agent ≥ 4.0.0, `login('adobe', …)` opens its popup before anything else, then seals the token as `{ kind: 'model', provider: 'adobe', name: 'ADOBE_IMS_TOKEN', source: 'oauth:adobe', expiresAt }` (the redirect's `expires_in` is in seconds, 86399 for a day) and resolves `{ sealed: true }`, so the token never reaches spectrum or the agent. IMS gives no refresh token: an expired token means signing in again, which replaces the record and keeps its placeholder. Agents before 4.0.0 get the token as before.
359
359
 
360
360
  ## Requests from programs (`/dev/embedder`)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-ecoverse/slicc-bios",
3
- "version": "1.51.33",
3
+ "version": "1.51.34",
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",
@@ -44,7 +44,7 @@
44
44
  "start": "node test/integration/chrome.mjs",
45
45
  "pretest": "slicc-cdp install-browser",
46
46
  "test": "node --test --test-concurrency=1 --test-timeout=900000 --test-global-setup=test/integration/global.mjs 'test/integration/*.test.mjs'",
47
- "test:unit": "mcr -c node_modules/@ai-ecoverse/slicc-shared-web/mcr.config.mjs node --test 'test/unit/**/*.test.mjs'",
47
+ "test:unit": "mcr -c node_modules/@ai-ecoverse/slicc-shared-web/mcr.config.mjs node --test --test-concurrency=1 'test/unit/**/*.test.mjs'",
48
48
  "lint": "slicc-lint",
49
49
  "format": "biome check --write ."
50
50
  },
@@ -52,9 +52,10 @@
52
52
  "@ai-ecoverse/slicc": "1.49.36",
53
53
  "@ai-ecoverse/slicc-browsers": "1.18.21",
54
54
  "@ai-ecoverse/slicc-cdp": "1.43.1",
55
+ "@ai-ecoverse/slicc-kernel": "1.172.0",
55
56
  "@ai-ecoverse/slicc-shared-web": "2.13.7",
56
- "@ai-ecoverse/slicc-spectrum": "1.108.1",
57
- "@ai-ecoverse/slicc-vault": "1.18.2",
57
+ "@ai-ecoverse/slicc-spectrum": "1.108.2",
58
+ "@ai-ecoverse/slicc-vault": "1.20.0",
58
59
  "@biomejs/biome": "2.6.2",
59
60
  "aws4fetch": "1.0.20",
60
61
  "es-module-lexer": "3.0.4",
@@ -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.11.3",
7
- "@ai-ecoverse/slicc-kernel": "1.170.3"
6
+ "@ai-ecoverse/slicc-agent": "7.11.5",
7
+ "@ai-ecoverse/slicc-kernel": "1.172.0"
8
8
  }
9
9
  }
@@ -14,22 +14,22 @@ importers:
14
14
  .:
15
15
  dependencies:
16
16
  '@ai-ecoverse/slicc-agent':
17
- specifier: 7.11.3
18
- version: 7.11.3(@ai-ecoverse/slicc-kernel@1.170.3)(@aws-sdk/credential-provider-node@3.972.84)(@smithy/signature-v4@5.7.4)(ws@8.22.0)
17
+ specifier: 7.11.5
18
+ version: 7.11.5(@ai-ecoverse/slicc-kernel@1.172.0)(@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
- specifier: 1.170.3
21
- version: 1.170.3
20
+ specifier: 1.172.0
21
+ version: 1.172.0
22
22
 
23
23
  packages:
24
24
 
25
25
  '@ai-ecoverse/jerk-oauth@1.3.9':
26
26
  resolution: {integrity: sha512-K9dUvrvG17dF7M82jSgCZFU1vIHJXTzDHtZF8bFkJoPAaWEkVwiB5bW5Xorq7rBuzuftv+fanJN/G6TIgia2mQ==}
27
27
 
28
- '@ai-ecoverse/slicc-agent@7.11.3':
29
- resolution: {integrity: sha512-z3RIZLvCwrMhNSjUoQFHfyg7lvcGuK0q42mxnW5ApNuUi9yz+AaRkhTbmNCaTHTMh+RS4SNDn29P5qFSIazHBw==}
28
+ '@ai-ecoverse/slicc-agent@7.11.5':
29
+ resolution: {integrity: sha512-zSHKIQZe24996Tc890vCe1psfwmswvAMydsoZDqPuX4NfSTI2XhVMjBjEv1zkGb97rHG0P9yB1gm35tGYJUsoQ==}
30
30
  engines: {node: '>=24'}
31
31
  peerDependencies:
32
- '@ai-ecoverse/slicc-kernel': '>=1.110.0 <2'
32
+ '@ai-ecoverse/slicc-kernel': '>=1.171.0 <2'
33
33
  '@ai-ecoverse/slicc-spectrum': ^1.103.0
34
34
  peerDependenciesMeta:
35
35
  '@ai-ecoverse/slicc-spectrum':
@@ -39,16 +39,16 @@ packages:
39
39
  resolution: {integrity: sha512-hinx7Lvb0IrClsxw1BdQTwLPjUcGkYjISmHOXHE3e4oiZZL6GpxJsvHTGaLk1bM/cX2VIz3C4BAch7HGqiVrWg==}
40
40
  engines: {node: '>=24'}
41
41
 
42
- '@ai-ecoverse/slicc-kernel@1.170.3':
43
- resolution: {integrity: sha512-s7ciR2tXLqVyJkNb4YYI9aqWQMfBkRE/TaH86x/rBd39i/H7h4Hjj10WPcDZ+zYnZ65W/IzwH58Hfdr8DUBERA==}
42
+ '@ai-ecoverse/slicc-kernel@1.172.0':
43
+ resolution: {integrity: sha512-a5K3zh1VGFaOz9eEIiKFwtlV4M5QO1HdyBcDbz2VdzsLBOCqESR/fvZh4j9ob3kYBlg7eKZXED9F+TI+xWAhIA==}
44
44
  engines: {node: '>=26'}
45
45
 
46
46
  '@ai-ecoverse/slicc-scrub@1.1.0':
47
47
  resolution: {integrity: sha512-HZ5qVnVez4B2UTP+UrHbYg6GnHJjpT09byt/HHJ8Y0IRk13q5Oj8rFFCme+R0T5h42ZlmwaNVI+n77VtSaCtuA==}
48
48
  engines: {node: '>=24'}
49
49
 
50
- '@ai-ecoverse/slicc-vault@1.18.2':
51
- resolution: {integrity: sha512-DXABK7NcAh/xHlntwiOl9foiT73hi9fbz9q/X/3k4lR77F8abzHgg7nR4VpZ2BWHZ2WpiPQJ1PNp3Q2oNew3pw==}
50
+ '@ai-ecoverse/slicc-vault@1.19.0':
51
+ resolution: {integrity: sha512-f0JJMY+flhPCBeokxHtDwws31XgmOrc0L941tRWoa14Mxjx1GJFlXElksCU/nU1kwQIVELSSnb9Mp3CiD1SjoQ==}
52
52
  engines: {node: '>=24'}
53
53
 
54
54
  '@anthropic-ai/sdk@0.129.0':
@@ -356,11 +356,11 @@ snapshots:
356
356
 
357
357
  '@ai-ecoverse/jerk-oauth@1.3.9': {}
358
358
 
359
- '@ai-ecoverse/slicc-agent@7.11.3(@ai-ecoverse/slicc-kernel@1.170.3)(@aws-sdk/credential-provider-node@3.972.84)(@smithy/signature-v4@5.7.4)(ws@8.22.0)':
359
+ '@ai-ecoverse/slicc-agent@7.11.5(@ai-ecoverse/slicc-kernel@1.172.0)(@aws-sdk/credential-provider-node@3.972.84)(@smithy/signature-v4@5.7.4)(ws@8.22.0)':
360
360
  dependencies:
361
361
  '@ai-ecoverse/slicc-browsers': 1.18.21
362
- '@ai-ecoverse/slicc-kernel': 1.170.3
363
- '@ai-ecoverse/slicc-vault': 1.18.2
362
+ '@ai-ecoverse/slicc-kernel': 1.172.0
363
+ '@ai-ecoverse/slicc-vault': 1.19.0
364
364
  '@aws-sdk/middleware-websocket': 3.972.54
365
365
  '@earendil-works/chord': 1.4.0
366
366
  '@earendil-works/pi-ai': 1.4.0(@aws-sdk/credential-provider-node@3.972.84)(@smithy/signature-v4@5.7.4)(ws@8.22.0)
@@ -383,11 +383,11 @@ snapshots:
383
383
 
384
384
  '@ai-ecoverse/slicc-browsers@1.18.21': {}
385
385
 
386
- '@ai-ecoverse/slicc-kernel@1.170.3': {}
386
+ '@ai-ecoverse/slicc-kernel@1.172.0': {}
387
387
 
388
388
  '@ai-ecoverse/slicc-scrub@1.1.0': {}
389
389
 
390
- '@ai-ecoverse/slicc-vault@1.18.2':
390
+ '@ai-ecoverse/slicc-vault@1.19.0':
391
391
  dependencies:
392
392
  '@ai-ecoverse/jerk-oauth': 1.3.9
393
393
  '@ai-ecoverse/slicc-scrub': 1.1.0
@@ -9,8 +9,8 @@
9
9
  "@ai-ecoverse/slicc-audio": "1.1.6",
10
10
  "@ai-ecoverse/slicc-browsers": "1.18.21",
11
11
  "@ai-ecoverse/slicc-capture": "1.4.1",
12
- "@ai-ecoverse/slicc-kernel": "1.170.3",
13
- "@ai-ecoverse/slicc-spectrum": "1.108.1",
12
+ "@ai-ecoverse/slicc-kernel": "1.172.0",
13
+ "@ai-ecoverse/slicc-spectrum": "1.108.2",
14
14
  "@ai-ecoverse/wasi-fnox": "1.42.0-1",
15
15
  "@ai-ecoverse/wasi-pnpm": "12.9.1-21",
16
16
  "@ai-ecoverse/wasm-bash": "5.3.0-23",
@@ -61,9 +61,9 @@
61
61
  }
62
62
  },
63
63
  "node_modules/@ai-ecoverse/slicc-kernel": {
64
- "version": "1.170.3",
65
- "resolved": "https://registry.npmjs.org/@ai-ecoverse/slicc-kernel/-/slicc-kernel-1.170.3.tgz",
66
- "integrity": "sha512-s7ciR2tXLqVyJkNb4YYI9aqWQMfBkRE/TaH86x/rBd39i/H7h4Hjj10WPcDZ+zYnZ65W/IzwH58Hfdr8DUBERA==",
64
+ "version": "1.172.0",
65
+ "resolved": "https://registry.npmjs.org/@ai-ecoverse/slicc-kernel/-/slicc-kernel-1.172.0.tgz",
66
+ "integrity": "sha512-a5K3zh1VGFaOz9eEIiKFwtlV4M5QO1HdyBcDbz2VdzsLBOCqESR/fvZh4j9ob3kYBlg7eKZXED9F+TI+xWAhIA==",
67
67
  "license": "Apache-2.0",
68
68
  "engines": {
69
69
  "node": ">=26"
@@ -146,9 +146,9 @@
146
146
  }
147
147
  },
148
148
  "node_modules/@ai-ecoverse/slicc-spectrum": {
149
- "version": "1.108.1",
150
- "resolved": "https://registry.npmjs.org/@ai-ecoverse/slicc-spectrum/-/slicc-spectrum-1.108.1.tgz",
151
- "integrity": "sha512-E2bJcQR3fh59/lo1CSWR4CNXUX6N6MSKbKnL8xQvmvnclH5VYjDHD34hv3cs6vFZaFPE62I3RNV25CbHr4iqPQ==",
149
+ "version": "1.108.2",
150
+ "resolved": "https://registry.npmjs.org/@ai-ecoverse/slicc-spectrum/-/slicc-spectrum-1.108.2.tgz",
151
+ "integrity": "sha512-Vu1uy3hpCoKTZB7d1T+d7MNHp2swb3S4CSNDOGd/py5mFjiy9Y0xaOsNuPN3k3UENq4NMcMgVXUWojo4YBbwiw==",
152
152
  "license": "Apache-2.0",
153
153
  "engines": {
154
154
  "node": ">=24"
@@ -6,8 +6,8 @@
6
6
  "@ai-ecoverse/slicc-audio": "1.1.6",
7
7
  "@ai-ecoverse/slicc-browsers": "1.18.21",
8
8
  "@ai-ecoverse/slicc-capture": "1.4.1",
9
- "@ai-ecoverse/slicc-kernel": "1.170.3",
10
- "@ai-ecoverse/slicc-spectrum": "1.108.1",
9
+ "@ai-ecoverse/slicc-kernel": "1.172.0",
10
+ "@ai-ecoverse/slicc-spectrum": "1.108.2",
11
11
  "@ai-ecoverse/wasi-fnox": "1.42.0-1",
12
12
  "@ai-ecoverse/wasi-pnpm": "12.9.1-21",
13
13
  "@ai-ecoverse/wasm-bash": "5.3.0-23",
@@ -18,11 +18,11 @@ importers:
18
18
  specifier: 1.4.1
19
19
  version: 1.4.1
20
20
  '@ai-ecoverse/slicc-kernel':
21
- specifier: 1.170.3
22
- version: 1.170.3
21
+ specifier: 1.172.0
22
+ version: 1.172.0
23
23
  '@ai-ecoverse/slicc-spectrum':
24
- specifier: 1.108.1
25
- version: 1.108.1
24
+ specifier: 1.108.2
25
+ version: 1.108.2
26
26
  '@ai-ecoverse/wasi-fnox':
27
27
  specifier: 1.42.0-1
28
28
  version: 1.42.0-1
@@ -58,8 +58,8 @@ packages:
58
58
  engines: {node: '>=24', slicc-kernel: '>=1.153.0'}
59
59
  hasBin: true
60
60
 
61
- '@ai-ecoverse/slicc-kernel@1.170.3':
62
- resolution: {integrity: sha512-s7ciR2tXLqVyJkNb4YYI9aqWQMfBkRE/TaH86x/rBd39i/H7h4Hjj10WPcDZ+zYnZ65W/IzwH58Hfdr8DUBERA==}
61
+ '@ai-ecoverse/slicc-kernel@1.172.0':
62
+ resolution: {integrity: sha512-a5K3zh1VGFaOz9eEIiKFwtlV4M5QO1HdyBcDbz2VdzsLBOCqESR/fvZh4j9ob3kYBlg7eKZXED9F+TI+xWAhIA==}
63
63
  engines: {node: '>=26'}
64
64
 
65
65
  '@ai-ecoverse/slicc-ortllama@1.28.0':
@@ -105,8 +105,8 @@ packages:
105
105
  webgpu:
106
106
  optional: true
107
107
 
108
- '@ai-ecoverse/slicc-spectrum@1.108.1':
109
- resolution: {integrity: sha512-E2bJcQR3fh59/lo1CSWR4CNXUX6N6MSKbKnL8xQvmvnclH5VYjDHD34hv3cs6vFZaFPE62I3RNV25CbHr4iqPQ==}
108
+ '@ai-ecoverse/slicc-spectrum@1.108.2':
109
+ resolution: {integrity: sha512-Vu1uy3hpCoKTZB7d1T+d7MNHp2swb3S4CSNDOGd/py5mFjiy9Y0xaOsNuPN3k3UENq4NMcMgVXUWojo4YBbwiw==}
110
110
  engines: {node: '>=24'}
111
111
 
112
112
  '@ai-ecoverse/wasi-fnox@1.42.0-1':
@@ -252,7 +252,7 @@ snapshots:
252
252
 
253
253
  '@ai-ecoverse/slicc-capture@1.4.1': {}
254
254
 
255
- '@ai-ecoverse/slicc-kernel@1.170.3': {}
255
+ '@ai-ecoverse/slicc-kernel@1.172.0': {}
256
256
 
257
257
  '@ai-ecoverse/slicc-ortllama@1.28.0':
258
258
  dependencies:
@@ -270,7 +270,7 @@ snapshots:
270
270
  - utf-8-validate
271
271
  optional: true
272
272
 
273
- '@ai-ecoverse/slicc-spectrum@1.108.1': {}
273
+ '@ai-ecoverse/slicc-spectrum@1.108.2': {}
274
274
 
275
275
  '@ai-ecoverse/wasi-fnox@1.42.0-1': {}
276
276